Index: /tags/ipp-unions-20250528/ppStack/src/ppStackSources.c
===================================================================
--- /tags/ipp-unions-20250528/ppStack/src/ppStackSources.c	(revision 42902)
+++ /tags/ipp-unions-20250528/ppStack/src/ppStackSources.c	(revision 42903)
@@ -165,5 +165,4 @@
             continue;
         }
-        numGoodImages++;
 
         pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PPSTACK.INPUT", i); // File of interest
@@ -189,4 +188,12 @@
         zpExp->data.F32[i] = psMetadataLookupF32(NULL, file->fpa->concepts, "FPA.ZP"); // Exposure zero point
 	// XXX need to get the zero point error values and propagate to get the FPA.ZP.ERR value
+
+        if (!isfinite(zpExp->data.F32[i])) {
+            psLogMsg("ppStack", PS_LOG_WARN, "Image %d has NAN zero point, skipping.", i);
+            options->inputMask->data.PS_TYPE_VECTOR_MASK_DATA[i] |= PPSTACK_MASK_CAL;
+            zp->data.F32[i] = NAN;
+            continue;
+	}
+        numGoodImages++;
 
 	options->zpInput->data.F32[i] = zpExp->data.F32[i]; // NOTE zpExp may be re-assigned below using relative photometry
