Index: /trunk/psModules/src/camera/pmFPAMosaic.c
===================================================================
--- /trunk/psModules/src/camera/pmFPAMosaic.c	(revision 10712)
+++ /trunk/psModules/src/camera/pmFPAMosaic.c	(revision 10713)
@@ -996,10 +996,24 @@
             hdu = source->parent->hdu;
         }
-        mosaicImage = psMemIncrRefCounter(psImageSubset(hdu->images->data[0], *chipRegion));
+        // force limits to land on chip
+        psRegion bounds = psRegionForImage (hdu->images->data[0], *chipRegion);
+        mosaicImage = psMemIncrRefCounter(psImageSubset(hdu->images->data[0], bounds));
+        if (!mosaicImage) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to select image pixels.\n");
+            return false;
+        }
         if (hdu->masks) {
-            mosaicMask = psMemIncrRefCounter(psImageSubset(hdu->masks->data[0], *chipRegion));
+            mosaicMask = psMemIncrRefCounter(psImageSubset(hdu->masks->data[0], bounds));
+            if (!mosaicMask) {
+                psError(PS_ERR_UNKNOWN, false, "Unable to select mask pixels.\n");
+                return false;
+            }
         }
         if (hdu->weights) {
-            mosaicWeights = psMemIncrRefCounter(psImageSubset(hdu->weights->data[0], *chipRegion));
+            mosaicWeights = psMemIncrRefCounter(psImageSubset(hdu->weights->data[0], bounds));
+            if (!mosaicWeights) {
+                psError(PS_ERR_UNKNOWN, false, "Unable to select weight pixels.\n");
+                return false;
+            }
         }
     } else {
