Index: trunk/ppStack/src/ppStackReadout.c
===================================================================
--- trunk/ppStack/src/ppStackReadout.c	(revision 16987)
+++ trunk/ppStack/src/ppStackReadout.c	(revision 17006)
@@ -66,5 +66,6 @@
     }
 
-    if (!pmStackCombine(outRO, stack, maskBad, maskBlank, kernelSize, iter, combineRej, useVariance, safe)) {
+    if (!pmStackCombine(outRO, stack, maskBad, maskBlank, kernelSize, iter, combineRej, true,
+                        useVariance, safe)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts with rejection.");
         psFree(stack);
@@ -85,5 +86,5 @@
     for (int i = 0; i < stack->n; i++) {
         pmStackData *data = stack->data[i]; // Data for this image
-        psImage *inspected = psPixelsToMask(NULL, data->pixels,
+        psImage *inspected = psPixelsToMask(NULL, data->inspect,
                                             psRegionSet(0, outRO->image->numCols - 1,
                                                         0, outRO->image->numRows - 1),
@@ -105,7 +106,6 @@
         psMetadataAddPtr(readout->analysis, PS_LIST_TAIL, PPSTACK_INSPECT_PIXELS,
                          PS_DATA_PIXELS | PS_META_DUPLICATE_OK, "Pixels to inspect from initial combination",
-                         data->pixels);
-    }
-
+                         data->inspect);
+    }
     psFree(stack);
 
@@ -144,5 +144,12 @@
     psList *fpaList = psListAlloc(NULL); // List of input FPAs, for concept averaging
     psList *cellList = psListAlloc(NULL); // List of input cells, for concept averaging
+    int numGood = num;                  // Number of good inputs: images that haven't been completely rejected
     for (int i = 0; i < num; i++) {
+        if (!rejected->data[i]) {
+            // Image completely rejected
+            numGood--;
+            continue;
+        }
+
         pmReadout *ro = readouts->data[i];
         assert(ro);
@@ -201,5 +208,5 @@
 
         pmStackData *data = pmStackDataAlloc(ro, weighting);
-        data->pixels = psMemIncrRefCounter(rejected->data[i]);
+        data->reject = psMemIncrRefCounter(rejected->data[i]);
         stack->data[i] = data;
     }
@@ -212,5 +219,5 @@
                 continue;
             }
-            psImage *reject = psPixelsToMask(NULL, data->pixels,
+            psImage *reject = psPixelsToMask(NULL, data->reject,
                                              psRegionSet(0, outRO->image->numCols - 1,
                                                          0, outRO->image->numRows - 1),
@@ -227,5 +234,5 @@
 #endif
 
-    if (!pmStackCombine(outRO, stack, maskBad, maskBlank, 0, 0, NAN, useVariance, false)) {
+    if (!pmStackCombine(outRO, stack, maskBad, maskBlank, 0, 0, NAN, numGood != num, useVariance, false)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts.");
         psFree(fpaList);
