Index: /tags/ipp-ops-20220906/psastro/src/psastroMosaicChipAstrom.c
===================================================================
--- /tags/ipp-ops-20220906/psastro/src/psastroMosaicChipAstrom.c	(revision 43094)
+++ /tags/ipp-ops-20220906/psastro/src/psastroMosaicChipAstrom.c	(revision 43095)
@@ -79,5 +79,5 @@
 
     // if basically the entire exposure is bad, return false (calling function sets bad quality)
-    float fGood = nChipGood / ((float) nChipTotal);
+    float fGood = (nChipTotal > 0) ? nChipGood / ((float) nChipTotal) : 0.0;
     psLogMsg ("psastro", PS_LOG_INFO, "%d good chips of %d = %.2f\n", nChipGood, nChipTotal, fGood);
     if (fGood < minGoodChipFraction) {
@@ -89,4 +89,16 @@
     }
 
+    // IPP-2536: with no good chips at all, the boresite fit, the zero point and
+    // the FPA WCS have nothing to work from.  Running the downstream stages on
+    // that state produces "zero point NaN" and then dies on a signal, which
+    // camera_exp.pl reports as the generic "Unable to perform psastro: 4".
+    // Report the condition instead; psastroAnalysis() turns it into a clean
+    // bad-quality exit.
+
+    if (nChipGood == 0) {
+        psWarning ("No good chips for this exposure; stopping mosaic astrometry\n");
+        return false;
+    }
+
     return true;
 }
