Index: /trunk/psModules/src/camera/pmFPA.c
===================================================================
--- /trunk/psModules/src/camera/pmFPA.c	(revision 18363)
+++ /trunk/psModules/src/camera/pmFPA.c	(revision 18364)
@@ -303,10 +303,10 @@
 
     tmpCell->concepts = psMetadataAlloc();
-    tmpCell->conceptsRead = PM_CONCEPT_SOURCE_NONE;
     if (!psMetadataAddStr(tmpCell->concepts, PS_LIST_HEAD, "CELL.NAME", 0, NULL, name)) {
         psErrorClear();
         psWarning("Could not add CELL.NAME to metadata.");
     }
-    pmConceptsBlankCell(tmpCell);
+    tmpCell->conceptsRead = PM_CONCEPT_SOURCE_NONE;
+    // XXX does this work?  moved to conceptsRead... pmConceptsBlankCell(tmpCell);
 
     return tmpCell;
@@ -342,10 +342,10 @@
 
     tmpChip->concepts = psMetadataAlloc();
-    tmpChip->conceptsRead = PM_CONCEPT_SOURCE_NONE;
     if (!psMetadataAddStr(tmpChip->concepts, PS_LIST_HEAD, "CHIP.NAME", 0, NULL, name)) {
         psErrorClear();
         psWarning("Could not add CHIP.NAME %s to concepts.", name);
     }
-    pmConceptsBlankChip(tmpChip);
+    tmpChip->conceptsRead = PM_CONCEPT_SOURCE_NONE;
+    // XXX does this work?  moved to conceptsRead... pmConceptsBlankChip(tmpChip);
     return tmpChip;
 }
@@ -372,7 +372,4 @@
 
     tmpFPA->concepts = psMetadataAlloc();
-    tmpFPA->conceptsRead = PM_CONCEPT_SOURCE_NONE;
-    pmConceptsBlankFPA(tmpFPA);
-
     if (!psMetadataAddStr(tmpFPA->concepts, PS_LIST_TAIL, "FPA.CAMERA", PS_META_REPLACE,
                           "Camera name (according to configuration)", cameraName)) {
@@ -380,4 +377,6 @@
         psWarning("Could not add FPA.CAMERA %s to concepts.", cameraName);
     }
+    tmpFPA->conceptsRead = PM_CONCEPT_SOURCE_NONE;
+    // XXX does this work?  moved to conceptsRead... pmConceptsBlankFPA(tmpFPA);
 
     // this may be somewhat pedantic, but it makes these things consistent
Index: /trunk/psModules/src/camera/pmFPAfileFitsIO.h
===================================================================
--- /trunk/psModules/src/camera/pmFPAfileFitsIO.h	(revision 18363)
+++ /trunk/psModules/src/camera/pmFPAfileFitsIO.h	(revision 18364)
@@ -5,6 +5,6 @@
  * @author PAP, IfA
  *
- * @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-06-26 21:11:56 $
+ * @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2008-06-30 00:53:45 $
  * Copyright 2004-2005 Institute for Astronomy, University of Hawaii
  */
Index: /trunk/psModules/src/camera/pmFPAfileIO.h
===================================================================
--- /trunk/psModules/src/camera/pmFPAfileIO.h	(revision 18363)
+++ /trunk/psModules/src/camera/pmFPAfileIO.h	(revision 18364)
@@ -5,6 +5,6 @@
  * @author PAP, IfA
  *
- * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-06-26 21:11:56 $
+ * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2008-06-30 00:53:45 $
  * Copyright 2004-2005 Institute for Astronomy, University of Hawaii
  */
Index: /trunk/psModules/src/concepts/pmConcepts.c
===================================================================
--- /trunk/psModules/src/concepts/pmConcepts.c	(revision 18363)
+++ /trunk/psModules/src/concepts/pmConcepts.c	(revision 18364)
@@ -191,7 +191,7 @@
 // Read all registered concepts for the specified level
 static bool conceptsRead(psMetadata **specs, // One of the concepts specifications
-                         const pmFPA *fpa,    // The FPA
-                         const pmChip *chip,  // The chip
-                         const pmCell *cell, // The cell
+                         pmFPA *fpa,    // The FPA
+                         pmChip *chip,  // The chip
+                         pmCell *cell, // The cell
                          unsigned int *read,     // What's already been read
                          pmConceptSource source, // The source of the concepts to read
@@ -215,4 +215,17 @@
     }
     pmHDU *hduHigh = pmHDUGetHighest(fpa, chip, cell); // Highest HDU
+
+    if (cell && (cell->conceptsRead == PM_CONCEPT_SOURCE_NONE)) {
+	pmConceptsBlankCell(cell);
+	cell->conceptsRead = PM_CONCEPT_SOURCE_BLANK;
+    }
+    if (chip && (chip->conceptsRead == PM_CONCEPT_SOURCE_NONE)) {
+	pmConceptsBlankChip(chip);
+	chip->conceptsRead = PM_CONCEPT_SOURCE_BLANK;
+    }
+    if (fpa && (fpa->conceptsRead == PM_CONCEPT_SOURCE_NONE)) {
+	pmConceptsBlankFPA(fpa);
+	fpa->conceptsRead = PM_CONCEPT_SOURCE_BLANK;
+    }
 
     bool success = true;                // Success in reading concepts?
Index: /trunk/psModules/src/concepts/pmConcepts.h
===================================================================
--- /trunk/psModules/src/concepts/pmConcepts.h	(revision 18363)
+++ /trunk/psModules/src/concepts/pmConcepts.h	(revision 18364)
@@ -4,6 +4,6 @@
  * @author Paul Price, IfA
  *
- * @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-06-17 22:16:38 $
+ * @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2008-06-30 00:53:45 $
  * Copyright 2005-2006 Institute for Astronomy, University of Hawaii
  */
@@ -24,10 +24,11 @@
 typedef enum {
     PM_CONCEPT_SOURCE_NONE     = 0x00,  ///< No concepts
-    PM_CONCEPT_SOURCE_CELLS    = 0x01,  ///< Concept comes from the camera information
-    PM_CONCEPT_SOURCE_DEFAULTS = 0x02,  ///< Concept comes from defaults
-    PM_CONCEPT_SOURCE_PHU      = 0x04,  ///< Concept comes from PHU
-    PM_CONCEPT_SOURCE_HEADER   = 0x08,  ///< Concept comes from FITS header
-    PM_CONCEPT_SOURCE_DATABASE = 0x10,  ///< Concept comes from database
-    PM_CONCEPT_SOURCE_ALL      = 0xff   ///< All concepts
+    PM_CONCEPT_SOURCE_BLANK    = 0x01,  ///< Blank concepts defined, but not read
+    PM_CONCEPT_SOURCE_CELLS    = 0x02,  ///< Concept comes from the camera information
+    PM_CONCEPT_SOURCE_DEFAULTS = 0x04,  ///< Concept comes from defaults
+    PM_CONCEPT_SOURCE_PHU      = 0x08,  ///< Concept comes from PHU
+    PM_CONCEPT_SOURCE_HEADER   = 0x10,  ///< Concept comes from FITS header
+    PM_CONCEPT_SOURCE_DATABASE = 0x20,  ///< Concept comes from database
+    PM_CONCEPT_SOURCE_ALL      = 0xfe   ///< All concepts (exclude BLANK)
 } pmConceptSource;
 
Index: /trunk/psModules/src/detrend/pmMaskBadPixels.c
===================================================================
--- /trunk/psModules/src/detrend/pmMaskBadPixels.c	(revision 18363)
+++ /trunk/psModules/src/detrend/pmMaskBadPixels.c	(revision 18364)
@@ -100,9 +100,9 @@
     if (suspect) {
         PS_ASSERT_IMAGE_NON_EMPTY(suspect, false);
-        PS_ASSERT_IMAGE_TYPE(suspect, PS_TYPE_S32, false);
+        PS_ASSERT_IMAGE_TYPE(suspect, PS_TYPE_F32, false);
         PS_ASSERT_IMAGES_SIZE_EQUAL(readout->image, suspect, false);
         psMemIncrRefCounter(suspect);
     } else {
-        suspect = psImageAlloc(readout->image->numCols, readout->image->numRows, PS_TYPE_S32);
+        suspect = psImageAlloc(readout->image->numCols, readout->image->numRows, PS_TYPE_F32);
         psImageInit(suspect, 0);
         psMetadataAddImage(output->analysis, PS_LIST_TAIL, PM_MASK_ANALYSIS_SUSPECT, PS_META_REPLACE,
@@ -115,5 +115,5 @@
         // If we get down here and the statistics are missing, then we should go and mask the entire image
         psWarning("Missing statistics --- flagging entire image as suspect.");
-        return (psImage*)psBinaryOp(suspect, suspect, "+", psScalarAlloc(1.0, PS_TYPE_S32));
+        return (psImage*)psBinaryOp(suspect, suspect, "+", psScalarAlloc(1.0, PS_TYPE_F32));
     }
 
@@ -126,6 +126,6 @@
         for (int x = 0; x < image->numCols; x++) {
             if (fabs((image->data.F32[y][x] - median) / stdev) >= rej &&
-                    (!mask || !(mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal))) {
-                suspect->data.S32[y][x]++;
+		(!mask || !(mask->data.PS_TYPE_MASK_DATA[y][x] & maskVal))) {
+                suspect->data.F32[y][x] += 1.0;
             }
         }
@@ -149,5 +149,5 @@
     }
     PS_ASSERT_IMAGE_NON_EMPTY(suspects, false);
-    PS_ASSERT_IMAGE_TYPE(suspects, PS_TYPE_S32, false);
+    PS_ASSERT_IMAGE_TYPE(suspects, PS_TYPE_F32, false);
     if (output->mask) {
         PS_ASSERT_IMAGE_NON_EMPTY(output->mask, false);
@@ -243,5 +243,5 @@
     for (int y = 0; y < suspects->numRows; y++) {
         for (int x = 0; x < suspects->numCols; x++) {
-            if (suspects->data.S32[y][x] >= limit) {
+            if (suspects->data.F32[y][x] >= limit) {
                 badpix->data.PS_TYPE_MASK_DATA[y][x] = maskVal;
             }
