Index: /branches/eam_branches/ipp-20211108/ppStack/src/ppStackLoopByPercent.c
===================================================================
--- /branches/eam_branches/ipp-20211108/ppStack/src/ppStackLoopByPercent.c	(revision 41919)
+++ /branches/eam_branches/ipp-20211108/ppStack/src/ppStackLoopByPercent.c	(revision 41920)
@@ -24,4 +24,5 @@
 
     // Prepare for combination (define outputs, generate output cells)
+    // NOTE: expmaps will be skipped if "PPSTACK.OUTPUT.EXP" -> NULL
     if (!ppStackCombinePrepare("PPSTACK.OUTPUT", "PPSTACK.OUTPUT.EXP", options->doBackground ? "PPSTACK.OUTPUT.BKGMODEL" : NULL, PPSTACK_FILES_STACK, stack, options, config)) {
         psError(psErrorCodeLast(), false, "Unable to prepare for combination.");
Index: /branches/eam_branches/ipp-20211108/ppStack/src/ppStackPhotometry.c
===================================================================
--- /branches/eam_branches/ipp-20211108/ppStack/src/ppStackPhotometry.c	(revision 41919)
+++ /branches/eam_branches/ipp-20211108/ppStack/src/ppStackPhotometry.c	(revision 41920)
@@ -57,5 +57,5 @@
     // psphotSetNFrames
     pmReadout *photRO = pmFPAviewThisReadout(photView, photFile->fpa);
-    if (photRO && options->expRO->mask) {
+    if (photRO && options->expRO && options->expRO->mask) {
         psMetadataAddImage(photRO->analysis, PS_LIST_TAIL, "EXPNUM", PS_META_REPLACE, "EXPNUM image", options->expRO->mask);
     }
Index: /branches/eam_branches/ipp-20211108/ppStack/src/ppStackReadout.c
===================================================================
--- /branches/eam_branches/ipp-20211108/ppStack/src/ppStackReadout.c	(revision 41919)
+++ /branches/eam_branches/ipp-20211108/ppStack/src/ppStackReadout.c	(revision 41920)
@@ -362,4 +362,5 @@
 }
 
+// NOTE: expRO is allowed to be NULL
 bool ppStackReadoutPercent(const pmConfig *config, pmReadout *outRO, pmReadout *expRO, const psArray *readouts,
 			       const psVector *mask, const psVector *weightings, const psVector *exposures,
@@ -368,5 +369,4 @@
     assert(config);
     assert(outRO);
-    assert(expRO);
     assert(readouts);
     assert(mask && mask->n == readouts->n && mask->type.type == PS_TYPE_VECTOR_MASK);
@@ -420,6 +420,4 @@
     }
 
-    // XXX rename minRange to rejectFraction
-    // XXX add expmaps
     if (!pmStackCombineByPercentile(outRO, expRO, stackData, minRange, maskBad, maskSuspect, maskBlank)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to combine input readouts with rejection.");
@@ -432,8 +430,10 @@
     outRO->parent->parent->data_exists = true; // output chip
 
-    expRO->data_exists = true;                 // expmap readout 
-    expRO->parent->data_exists = true;	       // expmap cell	
-    expRO->parent->parent->data_exists = true; // expmap chip	
-
+    if (expRO) {
+      expRO->data_exists = true;                 // expmap readout 
+      expRO->parent->data_exists = true;	       // expmap cell	
+      expRO->parent->parent->data_exists = true; // expmap chip	
+    }
+      
     psFree(stackData);
     sectionNum++;
