Index: trunk/ppMerge/src/ppMergeLoop.c
===================================================================
--- trunk/ppMerge/src/ppMergeLoop.c	(revision 24118)
+++ trunk/ppMerge/src/ppMergeLoop.c	(revision 24782)
@@ -94,11 +94,14 @@
     psVector *scales = NULL, *zeros = NULL; ///< Scale and zeroes for combination
     psArray *shutters = NULL;           ///< Shutter correction data
+    psImage *zeroSet = NULL;
     switch (type) {
       case PPMERGE_TYPE_FRINGE:
-        zeros = psMetadataLookupPtr(NULL, arguments, "ZEROS");
-        if (!zeros) {
+        zeroSet = psMetadataLookupPtr(NULL, arguments, "ZEROS");
+        if (!zeroSet) {
             psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find ZEROS");
             goto ERROR;
         }
+	// the zeros vector is passed to pmReadoutCombine for each set of inputs per cell
+	zeros = psVectorAlloc(zeroSet->numRows, PS_TYPE_F32);
         // Flow through
       case PPMERGE_TYPE_FLAT:
@@ -140,4 +143,5 @@
     pmFPA *outFPA = output->fpa;        ///< Output FPA
     pmHDU *lastHDU = NULL;              // Last HDU that was updated
+
     int cellNum = 0;                    ///< Index of cell
     if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) {
@@ -194,4 +198,10 @@
             }
 
+	    if (zeroSet) {
+	      for (int i = 0; i < zeroSet->numRows; i++) {
+		zeros->data.F32[i] = zeroSet->data.F32[i][cellNum];
+	      }
+	    }
+
             ppMergeFileGroup *fileGroup = NULL;
             psArray *fileGroups = psArrayAlloc(nThreads + 1);
@@ -335,4 +345,5 @@
 
             psFree(fileGroups);
+	    psFree(zeros);
 
             // XXX eventually need to keep both the shutter and the pattern, as we do with dark
