Index: trunk/psModules/src/camera/pmFPAConstruct.c
===================================================================
--- trunk/psModules/src/camera/pmFPAConstruct.c	(revision 7463)
+++ trunk/psModules/src/camera/pmFPAConstruct.c	(revision 7469)
@@ -138,5 +138,5 @@
     fpa->hdu = psMemIncrRefCounter(hdu);
     bool success = true;                // Success of reading concepts
-    if (hdu->header && !pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL)) {
+    if (hdu->header && !pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, false, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from header.\n");
         success = false;
@@ -164,5 +164,5 @@
     chip->hdu = psMemIncrRefCounter(hdu);
     bool success = true;                // Success of reading concepts
-    if (hdu->header && !pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
+    if (hdu->header && !pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, false, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from header.\n");
         success = false;
@@ -299,5 +299,5 @@
         }
 
-        if (!pmConceptsReadChip(newChip, PM_CONCEPT_SOURCE_DEFAULTS, false, NULL)) {
+        if (!pmConceptsReadChip(newChip, PM_CONCEPT_SOURCE_DEFAULTS, false, false, NULL)) {
             psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from camera and defaults for chip %s\n",
                     chipName);
@@ -751,5 +751,5 @@
     psFree(contentsIter);
 
-    if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_DEFAULTS, NULL)) {
+    if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_DEFAULTS, true, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from defaults for FPA %s.  Attempting to "
                 "proceed anyway.\n", currentFPAname);
Index: trunk/psModules/src/camera/pmFPAHeader.c
===================================================================
--- trunk/psModules/src/camera/pmFPAHeader.c	(revision 7463)
+++ trunk/psModules/src/camera/pmFPAHeader.c	(revision 7469)
@@ -6,49 +6,4 @@
 #include "pmConcepts.h"
 #include "pmFPAHeader.h"
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// File-static (private) functions
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-// Read concepts for all cells in a chip
-static bool chipConcepts(pmChip *chip   // The chip for which to read the concepts
-                        )
-{
-    assert(chip);
-
-    bool status = true;                 // Status of concept reading
-    status |= pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, false, NULL);
-    psArray *cells = chip->cells;       // The cells
-    for (int i = 0; i < cells->n; i++) {
-        pmCell *cell = cells->data[i];  // The cell of interest
-        if (!cell) {
-            continue;
-        }
-        status |= pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, false, NULL);
-    }
-
-    return status;
-}
-
-// Read concepts for all chips in an FPA
-static bool fpaConcepts(pmFPA *fpa   // The FPA for which to read the concepts
-                       )
-{
-    assert(fpa);
-
-    bool status = true;                 // Status of concept reading
-    status |= pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL);
-    psArray *chips = fpa->chips;        // The chips
-    for (int i = 0; i < chips->n; i++) {
-        pmChip *chip = chips->data[i];  // The chip of interest
-        if (!chip) {
-            continue;
-        }
-        status |= chipConcepts(chip);
-    }
-
-    return status;
-}
-
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -90,5 +45,5 @@
     }
 
-    if (!chipConcepts(chip)) {
+    if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to read concepts for chip.\n");
         return false;
@@ -114,5 +69,5 @@
     }
 
-    if (!fpaConcepts(fpa)) {
+    if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to read concepts for FPA.\n");
         return false;
Index: trunk/psModules/src/camera/pmFPARead.c
===================================================================
--- trunk/psModules/src/camera/pmFPARead.c	(revision 7463)
+++ trunk/psModules/src/camera/pmFPARead.c	(revision 7469)
@@ -183,6 +183,9 @@
 
     // Make sure we have the information we need
-    pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA | PM_CONCEPT_SOURCE_DEFAULTS,
-                       false, NULL);
+    if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
+                            PM_CONCEPT_SOURCE_DEFAULTS, true, NULL)) {
+        psError(PS_ERR_IO, false, "Failed to read concepts for cell.\n");
+        return false;
+    }
 
     // Get the trim and bias sections
@@ -322,5 +325,5 @@
     }
 
-    if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, false, NULL)) {
+    if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "Failed to read concepts for cell");
         return false;
@@ -354,5 +357,5 @@
     }
 
-    pmCellSetDataStatus (cell, true);
+    pmCellSetDataStatus(cell, true);
     return true;
 }
@@ -374,7 +377,10 @@
     }
     if (success) {
-        pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, false, NULL);
+        if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) {
+            psError(PS_ERR_IO, false, "Failed to read concepts for FPA.\n");
+            return false;
+        }
         // XXX probably could just use chip->data_exists
-        pmChipSetDataStatus (chip, true);
+        pmChipSetDataStatus(chip, true);
     }
 
@@ -398,5 +404,8 @@
     }
     if (success) {
-        pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL);
+        if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
+            psError(PS_ERR_IO, false, "Failed to read concepts for FPA.\n");
+            return false;
+        }
     } else {
         psError(PS_ERR_UNKNOWN, false, "Unable to read any chips in FPA");
Index: trunk/psModules/src/camera/pmFPAWrite.c
===================================================================
--- trunk/psModules/src/camera/pmFPAWrite.c	(revision 7463)
+++ trunk/psModules/src/camera/pmFPAWrite.c	(revision 7469)
@@ -136,5 +136,5 @@
             (pixels && (hdu->images || (!hdu->images && pmHDUGenerateForChip(chip) && hdu->images)))) { // Data
         success &= pmConceptsWriteChip(chip, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
-                                       PM_CONCEPT_SOURCE_DEFAULTS, false, NULL);
+                                       PM_CONCEPT_SOURCE_DEFAULTS, false, true, NULL);
         success &= pmHDUWrite(hdu, fits);
     }
@@ -177,5 +177,5 @@
             (pixels && (hdu->images || (!hdu->images && pmHDUGenerateForFPA(fpa) && hdu->images)))) { // Data
         success &= pmConceptsWriteFPA(fpa, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
-                                      PM_CONCEPT_SOURCE_DEFAULTS, NULL);
+                                      PM_CONCEPT_SOURCE_DEFAULTS, true, NULL);
         success &= pmHDUWrite(hdu, fits);
     }
