Index: trunk/ppStats/src/ppStatsLoop.c
===================================================================
--- trunk/ppStats/src/ppStatsLoop.c	(revision 7924)
+++ trunk/ppStats/src/ppStatsLoop.c	(revision 7931)
@@ -59,10 +59,12 @@
     // Iterate through the FPA
     pmFPA *fpa = data->inFPA;           // The FPA of interest
-    if (psListLength(data->headers) > 0 && fpa->hdu && pmFPAReadHeader(fpa, data->inFile)) {
+    if (psListLength(data->headers) > 0 && fpa->hdu) {
+        pmFPAReadHeader(fpa, data->inFile);
         pmHDU *hdu = fpa->hdu;          // HDU for headers
         getMetadata(fpaResults, hdu->header, headersIter);
     }
-    if (psListLength(data->concepts) > 0 &&
-        pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_ALL, false, config->database)) {
+    if (psListLength(data->concepts) > 0) {
+        pmFPAReadHeader(fpa, data->inFile);
+        pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_ALL, false, config->database);
         getMetadata(fpaResults, fpa->concepts, conceptsIter);
     }
@@ -83,10 +85,12 @@
         psMetadata *chipResults = psMetadataAlloc(); // Metadata to hold the chip-level results
 
-        if (psListLength(data->headers) > 0 && chip->hdu && pmChipReadHeader(chip, data->inFile)) {
+        if (psListLength(data->headers) > 0 && chip->hdu) {
+            pmChipReadHeader(chip, data->inFile);
             pmHDU *hdu = chip->hdu;     // HDU for headers
             getMetadata(chipResults, hdu->header, headersIter);
         }
-        if (psListLength(data->concepts) > 0 &&
-            pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_ALL, false, false, config->database)) {
+        if (psListLength(data->concepts) > 0) {
+            pmChipReadHeader(chip, data->inFile);
+            pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_ALL, false, false, config->database);
             getMetadata(chipResults, chip->concepts, conceptsIter);
         }
@@ -107,12 +111,12 @@
             psMetadata *cellResults = psMetadataAlloc(); // Metadata to hold the cell-level results
 
-            if (psListLength(data->headers) > 0 && cell->hdu && pmCellReadHeader(cell, data->inFile)) {
+            if (psListLength(data->headers) > 0 && cell->hdu) {
+                pmCellReadHeader(cell, data->inFile);
                 pmHDU *hdu = cell->hdu;     // HDU for headers
                 getMetadata(cellResults, hdu->header, headersIter);
-                psMetadataAdd(chipResults, PS_LIST_TAIL, cellName, PS_DATA_METADATA,
-                              "Results for cell", cellResults);
-            }
-            if (psListLength(data->concepts) > 0 &&
-                pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_ALL, false, config->database)) {
+            }
+            if (psListLength(data->concepts) > 0) {
+                pmCellReadHeader(cell, data->inFile);
+                pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_ALL, false, config->database);
                 getMetadata(cellResults, cell->concepts, conceptsIter);
             }
@@ -120,4 +124,8 @@
             if (!data->doStats) {
                 // Nothing further to do --- don't want to waste our time reading the data
+                if (psListLength(cellResults->list) > 0) {
+                    psMetadataAdd(chipResults, PS_LIST_TAIL, cellName, PS_DATA_METADATA,
+                                  "Results for cell", cellResults);
+                }
                 continue;
             }
@@ -213,9 +221,7 @@
             WRITE_STAT(PS_STAT_CLIPPED_STDEV,   "CLIPPED_STDEV", clippedStdev);
 
-           // If we didn't add it before, add it now
-            if (!psMetadataLookup(chipResults, cellName)) {
-                psMetadataAdd(chipResults, PS_LIST_TAIL, cellName, PS_DATA_METADATA,
-                              "Results for cell", cellResults);
-            }
+            // Add the cell results to the chip
+            psMetadataAdd(chipResults, PS_LIST_TAIL, cellName, PS_DATA_METADATA,
+                          "Results for cell", cellResults);
 
             psFree(cellResults);
