Index: trunk/psModules/src/camera/pmFPACopy.c
===================================================================
--- trunk/psModules/src/camera/pmFPACopy.c	(revision 11869)
+++ trunk/psModules/src/camera/pmFPACopy.c	(revision 11871)
@@ -249,17 +249,21 @@
         int xZero = psMetadataLookupS32(NULL, source->concepts, "CELL.X0"); // CELL.X0 from source
         int xParity = psMetadataLookupS32(NULL, source->concepts, "CELL.XPARITY"); // Parity in x
-        int xBin = psMetadataLookupS32(NULL, source->concepts, "CELL.XBIN"); // CELL.XBIN from source
+        int sourceBin = psMetadataLookupS32(NULL, source->concepts, "CELL.XBIN"); // CELL.XBIN from source
         int xSize = psMetadataLookupS32(NULL, source->concepts, "CELL.XSIZE"); // CELL.XSIZE of source
 
+        if (sourceBin == 0) {
+            // Don't know the binning; assume it is unity
+            sourceBin = xBin;
+        }
+
         psTrace("psModules.camera", 3, "CELL.X0: Before: %d After: %d\n", xZero,
-                xZero + (xSize - 1) * xParity * xBin);
-        psTrace("psModules.camera", 9, "(xParity: %d xBin: %d numCols: %d)\n", xParity, xBin, xSize);
-
-        if (xParity == 0 || xBin == 0 || xSize == 0) {
-            psWarning("New CELL.X0 may be incorrect due to missing concepts "
-                      "(CELL.X0, CELL.XPARITY, CELL.XBIN, CELL.XSIZE)");
-        }
-
-        xZero += (xSize - 1) * xParity * xBin; // Change the parity on the X0 position
+                xZero + (xSize - 1) * xParity * sourceBin);
+        psTrace("psModules.camera", 9, "(xParity: %d xBin: %d numCols: %d)\n", xParity, sourceBin, xSize);
+
+        if (xParity == 0 || xSize == 0) {
+            psWarning("New CELL.X0 may be incorrect due to missing concepts (CELL.XPARITY, CELL.XSIZE)");
+        }
+
+        xZero += (xSize - 1) * xParity * sourceBin; // Change the parity on the X0 position
         psMetadataItem *newItem = psMetadataLookup(target->concepts, "CELL.X0"); // CELL.X0 from target
         newItem->data.S32 = xZero;
@@ -268,17 +272,22 @@
         int yZero = psMetadataLookupS32(NULL, source->concepts, "CELL.Y0"); // CELL.Y0 from source
         int yParity = psMetadataLookupS32(NULL, source->concepts, "CELL.YPARITY"); // Parity in y
-        int yBin = psMetadataLookupS32(NULL, source->concepts, "CELL.YBIN"); // Binning in y
+        int sourceBin = psMetadataLookupS32(NULL, source->concepts, "CELL.YBIN"); // Binning in y
         int ySize = psMetadataLookupS32(NULL, source->concepts, "CELL.YSIZE"); // CELL.YSIZE of source
 
+        if (sourceBin == 0) {
+            // Don't know the binning; assume it is unity
+            sourceBin = yBin;
+        }
+
         psTrace("psModules.camera", 3, "CELL.Y0: Before: %d After: %d\n", yZero,
-                yZero + (ySize - 1) * yParity * yBin);
-        psTrace("psModules.camera", 9, "(yParity: %d yBin: %d numRows: %d)\n", yParity, yBin, ySize);
-
-        if (yParity == 0 || yBin == 0 || ySize == 0) {
+                yZero + (ySize - 1) * yParity * sourceBin);
+        psTrace("psModules.camera", 9, "(yParity: %d yBin: %d numRows: %d)\n", yParity, sourceBin, ySize);
+
+        if (yParity == 0 || ySize == 0) {
             psWarning("New CELL.Y0 may be incorrect due to missing concepts "
                       "(CELL.Y0, CELL.YPARITY, CELL.YBIN, CELL.YSIZE)");
         }
 
-        yZero += (ySize - 1) * yParity * yBin; // Change the parity on the Y0 position
+        yZero += (ySize - 1) * yParity * sourceBin; // Change the parity on the Y0 position
         psMetadataItem *newItem = psMetadataLookup(target->concepts, "CELL.Y0"); // CELL.Y0 from target
         newItem->data.S32 = yZero;
