Index: /trunk/psModules/src/camera/pmFPABin.c
===================================================================
--- /trunk/psModules/src/camera/pmFPABin.c	(revision 20441)
+++ /trunk/psModules/src/camera/pmFPABin.c	(revision 20442)
@@ -29,5 +29,10 @@
 
     // Output image
-    psImage *outImage = out->image = psImageRecycle(out->image,  numColsOut, numRowsOut, PS_TYPE_F32);
+    psImage *outImage;
+    if (out->image && out->image->numCols >= numColsOut && out->image->numRows >= numRowsOut) {
+        outImage = out->image;
+    } else {
+        outImage = out->image = psImageRecycle(out->image,  numColsOut, numRowsOut, PS_TYPE_F32);
+    }
 
     int xLast = numColsIn - 1, yLast = numRowsIn - 1; // Last index
@@ -66,16 +71,7 @@
         outCell->data_exists = outCell->parent->data_exists = true;
 
-        if (in->parent) {
-            pmCell *inCell = in->parent;// Input cell
-            psAssert(outCell != inCell, "Can't copy in place!");
-            psFree(outCell->concepts);
-            outCell->concepts = psMetadataCopy(NULL, inCell->concepts);
-        }
-
-        // Update the concepts with the new values for the binning
-        psMetadataItem *binItem = psMetadataLookup(outCell->concepts, "CELL.XBIN");
-        binItem->data.S32 *= xBin;
-        binItem = psMetadataLookup(outCell->concepts, "CELL.YBIN");
-        binItem->data.S32 *= yBin;
+        // We would copy the concepts from the input cell, except that is done by pmFPACopy,
+        // pmChipCopyStructure, etc.  This function just does the mechanics of binning.
+        // We don't even update the CELL.XBIN, CELL.YBIN because that would apply the correction twice.
     }
 
