Index: trunk/psModules/src/camera/pmFPAMosaic.c
===================================================================
--- trunk/psModules/src/camera/pmFPAMosaic.c	(revision 12589)
+++ trunk/psModules/src/camera/pmFPAMosaic.c	(revision 12629)
@@ -990,5 +990,5 @@
 // the mosaic image.
 
-bool pmChipMosaic(pmChip *target, const pmChip *source)
+bool pmChipMosaic(pmChip *target, const pmChip *source, bool deepCopy)
 {
     // Target exists, and has only a single cell
@@ -1012,5 +1012,5 @@
     psRegion *chipRegion = NULL;        // Region on the HDU that corresponds to the chip
     int xBin = 0, yBin = 0;             // Binning for the chip mosaic
-    if ((chipRegion = niceChip(&xBin, &yBin, source))) {
+    if (!deepCopy && (chipRegion = niceChip(&xBin, &yBin, source))) {
         // Case 1 --- we need only cut out the region
         psTrace("psModules.camera", 1, "Case 1 mosaicking: simple cut-out.\n");
@@ -1047,5 +1047,6 @@
             return false;
         }
-        chipRegion = psRegionAlloc(NAN, NAN, NAN, NAN); // We've cut and paste, so there's no valid trimsec
+        chipRegion = psRegionAlloc(0, 0, 0, 0); // We've cut and paste, so there's no valid trimsec
+	*chipRegion = psRegionForImage (mosaicImage, *chipRegion);
     }
     psTrace("psModules.camera", 1, "xBin,yBin: %d,%d\n", xBin, yBin);
@@ -1105,5 +1106,5 @@
 
 
-bool pmFPAMosaic(pmFPA *target, const pmFPA *source)
+bool pmFPAMosaic(pmFPA *target, const pmFPA *source, bool deepCopy)
 {
     // Target exists, and has only a single chip with single cell
@@ -1133,5 +1134,5 @@
     psRegion *fpaRegion = NULL;         // Region on the HDU that corresponds to the FPA
     int xBin = 0, yBin = 0;             // Binning for the FPA mosaic
-    if ((fpaRegion = niceFPA(&xBin, &yBin, source))) {
+    if (!deepCopy && (fpaRegion = niceFPA(&xBin, &yBin, source))) {
         // Case 1 --- we need only cut out the region
         psTrace("psModules.camera", 1, "Case 1 mosaicking: simple cut-out.\n");
