Index: trunk/psModules/src/camera/pmFPAMosaic.c
===================================================================
--- trunk/psModules/src/camera/pmFPAMosaic.c	(revision 8815)
+++ trunk/psModules/src/camera/pmFPAMosaic.c	(revision 8823)
@@ -34,4 +34,8 @@
 }
 
+// Update a concept to the assumed value
+#define FIX_CONCEPT(SOURCE, NAME, TYPE, VALUE) \
+psMetadataItem *item = psMetadataLookup(SOURCE, NAME); \
+item->data.TYPE = VALUE;
 
 // Get the bounds for an chip's pixels on the HDU
@@ -726,12 +730,15 @@
     if (!mdok) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.X0 is not set for the target cell; assuming 0.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.X0", S32, 0);
     }
     int y0Target = psMetadataLookupS32(&mdok, targetCell->concepts, "CELL.Y0");
     if (!mdok) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.Y0 is not set for the target cell; assuming 0.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.Y0", S32, 0);
     }
     int xParityTarget = psMetadataLookupS32(&mdok, targetCell->concepts, "CELL.XPARITY");
     if (!mdok || (xParityTarget != -1 && xParityTarget != 1)) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.XPARITY is not set for the target cell; assuming 1.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.XPARITY", S32, 1);
         xParityTarget = 1;
     }
@@ -739,4 +746,5 @@
     if (!mdok || (yParityTarget != -1 && yParityTarget != 1)) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.YPARITY is not set for the target cell; assuming 1.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.YPARITY", S32, 1);
         yParityTarget = 1;
     }
@@ -763,4 +771,5 @@
     if (!mdok || xBinTarget == 0) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.XBIN is not set for the target cell; assuming %d.\n",*xBinChip);
+        FIX_CONCEPT(targetCell->concepts, "CELL.XBIN", S32, *xBinChip);
     } else {
         *xBinChip = xBinTarget;
@@ -769,4 +778,5 @@
     if (!mdok || yBinTarget == 0) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.YBIN is not set for the target cell; assuming %d.\n",*yBinChip);
+        FIX_CONCEPT(targetCell->concepts, "CELL.YBIN", S32, *yBinChip);
     } else {
         *yBinChip = yBinTarget;
@@ -828,20 +838,25 @@
     if (!mdok) {
         psLogMsg(__func__, PS_LOG_WARN, "CHIP.X0 is not set for the target chip; assuming 0.\n");
+        FIX_CONCEPT(targetChip->concepts, "CHIP.X0", S32, 0);
     }
     int y0Target = psMetadataLookupS32(&mdok, targetChip->concepts, "CHIP.Y0");
     if (!mdok) {
         psLogMsg(__func__, PS_LOG_WARN, "CHIP.Y0 is not set for the target chip; assuming 0.\n");
+        FIX_CONCEPT(targetChip->concepts, "CHIP.Y0", S32, 0);
     }
     x0Target += psMetadataLookupS32(&mdok, targetCell->concepts, "CELL.X0");
     if (!mdok) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.X0 is not set for the target cell; assuming 0.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.X0", S32, 0);
     }
     y0Target += psMetadataLookupS32(&mdok, targetCell->concepts, "CELL.Y0");
     if (!mdok) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.Y0 is not set for the target cell; assuming 0.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.Y0", S32, 0);
     }
     int xParityChipTarget = psMetadataLookupS32(&mdok, targetChip->concepts, "CHIP.XPARITY");
     if (!mdok || (xParityChipTarget != -1 && xParityChipTarget != 1)) {
         psLogMsg(__func__, PS_LOG_WARN, "CHIP.XPARITY is not set for the target chip; assuming 1.\n");
+        FIX_CONCEPT(targetChip->concepts, "CHIP.XPARITY", S32, 1);
         xParityChipTarget = 1;
     }
@@ -849,4 +864,5 @@
     if (!mdok || (yParityChipTarget != -1 && yParityChipTarget != 1)) {
         psLogMsg(__func__, PS_LOG_WARN, "CHIP.YPARITY is not set for the target chip; assuming 1.\n");
+        FIX_CONCEPT(targetChip->concepts, "CHIP.YPARITY", S32, 1);
         yParityChipTarget = 1;
     }
@@ -854,4 +870,5 @@
     if (!mdok || (xParityCellTarget != -1 && xParityCellTarget != 1)) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.XPARITY is not set for the target cell; assuming 1.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.XPARITY", S32, 1);
         xParityCellTarget = 1;
     }
@@ -859,4 +876,5 @@
     if (!mdok || (yParityCellTarget != -1 && yParityCellTarget != 1)) {
         psLogMsg(__func__, PS_LOG_WARN, "CELL.YPARITY is not set for the target cell; assuming 1.\n");
+        FIX_CONCEPT(targetCell->concepts, "CELL.YPARITY", S32, 1);
         yParityCellTarget = 1;
     }
