Index: /trunk/ppImage/src/ppImageLoop.c
===================================================================
--- /trunk/ppImage/src/ppImageLoop.c	(revision 10588)
+++ /trunk/ppImage/src/ppImageLoop.c	(revision 10589)
@@ -142,12 +142,24 @@
             }
 
+#if 0
             if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) {
                 return false;
             }
-        }
-
-        ppImageMosaicChip(config, view, "PPIMAGE.OUTPUT.CHIP", "PPIMAGE.OUTPUT");
-        ppImageRebinChip(config, view, "PPIMAGE.BIN1", "PPIMAGE.OUTPUT.CHIP");
-        ppImageRebinChip(config, view, "PPIMAGE.BIN2", "PPIMAGE.OUTPUT.CHIP");
+#endif
+
+        }
+
+        if (!ppImageMosaicChip(config, view, "PPIMAGE.OUTPUT.CHIP", "PPIMAGE.OUTPUT")) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to mosaic chip.\n");
+            return false;
+        }
+        if (!ppImageRebinChip(config, view, "PPIMAGE.BIN1", "PPIMAGE.OUTPUT.CHIP")) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to bin chip.\n");
+            return false;
+        }
+        if (!ppImageRebinChip(config, view, "PPIMAGE.BIN2", "PPIMAGE.OUTPUT.CHIP")) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to bin chip.\n");
+            return false;
+        }
 
         // we perform photometry on the readouts of this chip in the output
@@ -156,4 +168,17 @@
         }
 
+        // Close cells
+        view->cell = -1;
+        while ((cell = pmFPAviewNextCell(view, input->fpa, 1)) != NULL) {
+            if (!cell->process || !cell->file_exists) {
+                continue;
+            }
+
+            if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) {
+                return false;
+            }
+        }
+
+        // Close chip
         if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) {
             return false;
Index: /trunk/ppImage/src/ppImageMosaic.c
===================================================================
--- /trunk/ppImage/src/ppImageMosaic.c	(revision 10588)
+++ /trunk/ppImage/src/ppImageMosaic.c	(revision 10589)
@@ -21,7 +21,9 @@
     }
 
-    pmFPAAddSourceFromView(out->fpa, view, out->format);
     pmChip *outChip = pmFPAviewThisChip(view, out->fpa);
     pmChip *inChip = pmFPAviewThisChip(view, in->fpa);
+    if (!outChip->hdu && !outChip->parent->hdu) {
+        pmFPAAddSourceFromView(out->fpa, view, out->format);
+    }
 
     // Copy over concepts
Index: /trunk/ppImage/src/ppImageRebinReadout.c
===================================================================
--- /trunk/ppImage/src/ppImageRebinReadout.c	(revision 10588)
+++ /trunk/ppImage/src/ppImageRebinReadout.c	(revision 10589)
@@ -11,8 +11,8 @@
 
     pmFPAfile *inFile = psMetadataLookupPtr (NULL, config->files, inName);
-    if (inFile == NULL) return NULL;
+    if (inFile == NULL) return false;
 
     pmFPAfile *outFile = psMetadataLookupPtr (NULL, config->files, outName);
-    if (outFile == NULL) return NULL;
+    if (outFile == NULL) return false;
 
     // XXX double check that chip != -1?
@@ -20,5 +20,8 @@
     pmChip *inChip = pmFPAviewThisChip (view, inFile->fpa);
     pmChip *outChip = pmFPAviewThisChip (view, outFile->fpa);
-    pmChipCopyStructure (outChip, inChip, outFile->xBin, outFile->yBin);
+    if (!pmChipCopyStructure (outChip, inChip, outFile->xBin, outFile->yBin)) {
+        psError(PS_ERR_UNKNOWN, false, "Unable to copy chip structure.");
+        return false;
+    }
 
     while ((cell = pmFPAviewNextCell (view, inFile->fpa, 1)) != NULL) {
@@ -56,4 +59,5 @@
         binItem->data.S32 = yBin * outFile->yBin;
     }
+
     return true;
 }
