Index: trunk/ppStack/src/ppStackReadout.c
===================================================================
--- trunk/ppStack/src/ppStackReadout.c	(revision 23346)
+++ trunk/ppStack/src/ppStackReadout.c	(revision 23576)
@@ -185,6 +185,5 @@
     assert(outRO);
     assert(readouts);
-    assert(rejected);
-    assert(readouts->n == rejected->n);
+    assert(!rejected || readouts->n == rejected->n);
     assert(mask && mask->n == readouts->n && mask->type.type == PS_TYPE_VECTOR_MASK);
     assert(weightings && weightings->n == readouts->n && weightings->type.type == PS_TYPE_F32);
@@ -207,10 +206,13 @@
     psArray *stack = psArrayAlloc(num); // Array for stacking
 
-    int numGood = num;                  // Number of good inputs: images that haven't been completely rejected
+    bool entire = (rejected ? false : true); // Combine entire image?
     for (int i = 0; i < num; i++) {
         pmReadout *ro = readouts->data[i];
-        if (!ro || !rejected->data[i] || mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) {
-            // Image completely rejected
-            numGood--;
+        if (mask->data.U8[i] & (PPSTACK_MASK_REJECT | PPSTACK_MASK_BAD)) {
+            // Image completely rejected since previous combination
+            entire = true;
+            continue;
+        } else if (mask->data.U8[i]) {
+            // Image completely rejected before original combination
             continue;
         }
@@ -234,10 +236,10 @@
         pmStackData *data = pmStackDataAlloc(ro, weightings->data.F32[i],
                                              addVariance ? addVariance->data.F32[i] : NAN);
-        data->reject = psMemIncrRefCounter(rejected->data[i]);
+        data->reject = rejected ? psMemIncrRefCounter(rejected->data[i]) : NULL;
         stack->data[i] = data;
     }
 
     if (!pmStackCombine(outRO, stack, maskVal | maskBad, maskBad, 0, 0, NAN, NAN, NAN,
-                        numGood != num, useVariance, false)) {
+                        entire, useVariance, false)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts.");
         psFree(stack);
