Index: /trunk/psphot/src/psphotReadoutCleanup.c
===================================================================
--- /trunk/psphot/src/psphotReadoutCleanup.c	(revision 11314)
+++ /trunk/psphot/src/psphotReadoutCleanup.c	(revision 11315)
@@ -6,8 +6,9 @@
 bool psphotReadoutCleanup (pmConfig *config, pmReadout *readout, psMetadata *recipe, pmPSF *psf, psArray *sources) {
 
-    psErrorCode err = psErrorCodeLast();
-    if (err != PSPHOT_ERR_DATA) {
-	return false;
-    }
+    if (psErrorCodeLast() == PSPHOT_ERR_DATA) {
+        psErrorStackPrint(stderr, "Error in the psphot readout analysis");
+	psErrorClear();
+    } 
+    if (psErrorCodeLast() != PS_ERR_NONE) return false;
 
     // use the psf-model to measure FWHM stats
@@ -31,11 +32,17 @@
 
     // save the results of the analysis
-    psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.SOURCES", PS_DATA_ARRAY,    "psphot sources", sources);
     psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.HEADER",  PS_DATA_METADATA, "header stats", header);
-    psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.PSF",     PS_DATA_UNKNOWN,  "psphot psf", psf);
+    if (sources) {
+	psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.SOURCES", PS_DATA_ARRAY,    "psphot sources", sources);
+    }
+    if (psf) {
+	psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSPHOT.PSF",     PS_DATA_UNKNOWN,  "psphot psf", psf);
+    }
 
     // remove internal pmFPAfiles, if created
     pmFPAfileDropInternal (config->files, "PSPHOT.BACKMDL");
     pmFPAfileDropInternal (config->files, "PSPHOT.BACKGND");
+
+    if (psErrorCodeLast() != PS_ERR_NONE) abort();
 
     // XXX move this to top of loop
