Index: branches/pap/ppSub/src/ppSubReadoutPhotometry.c
===================================================================
--- branches/pap/ppSub/src/ppSubReadoutPhotometry.c	(revision 23511)
+++ branches/pap/ppSub/src/ppSubReadoutPhotometry.c	(revision 23580)
@@ -45,6 +45,11 @@
     pmPSF *psf = psMetadataLookupPtr(NULL, psfInputChip->analysis, "PSPHOT.PSF"); // PSF for photometry
     if (!psf) {
-        psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find PSF from psphot");
-        return false;
+        psWarning("No PSF available --- suspect bad data quality.");
+        if (stats && psMetadataLookupBool(NULL, stats, "QUALITY")) {
+            psError(PS_ERR_UNEXPECTED_NULL, false, "Bad or unset QUALITY flag");
+            return false;
+        }
+        psErrorClear();
+        psphotFilesActivate(config, false);
     }
     psMetadataAddPtr(psfLoadChip->analysis, PS_LIST_TAIL, "PSPHOT.PSF", PS_DATA_UNKNOWN | PS_META_REPLACE,
@@ -86,7 +91,14 @@
 
     if (!psphotReadoutMinimal(config, view)) {
-        psWarning("Unable to perform photometry on subtracted image.");
-        psErrorStackPrint(stderr, "Error stack from photometry:");
+        // This is likely a data quality issue
+        // XXX Split into multiple cases using error codes?
+        psErrorStackPrint("Unable to perform photometry on image");
+        psWarning("Unable to perform photometry on image --- suspect bad data quality.");
+        if (stats && psMetadataLookupS32(NULL, stats, "QUALITY") == 0) {
+            psMetadataAddS32(stats, PS_LIST_TAIL, "QUALITY", PS_META_REPLACE,
+                             "Unable to perform photometry on image", psErrorCodeLast());
+        }
         psErrorClear();
+        psphotFilesActivate(config, false);
     }
 #if 1
