Index: trunk/ppStack/src/ppStackFinish.c
===================================================================
--- trunk/ppStack/src/ppStackFinish.c	(revision 27157)
+++ trunk/ppStack/src/ppStackFinish.c	(revision 27158)
@@ -70,4 +70,7 @@
     // Write out summary statistics
     if (options->stats) {
+
+        psMetadataAddS32(options->stats, PS_LIST_TAIL, "QUALITY", PS_META_REPLACE,
+                         "Bad data quality flag", options->quality);
         psMetadataAddF32(options->stats, PS_LIST_TAIL, "TIME_STACK", 0,
                          "Total time", psTimerClear("PPSTACK_TOTAL"));
Index: trunk/ppStack/src/ppStackLoop.c
===================================================================
--- trunk/ppStack/src/ppStackLoop.c	(revision 27157)
+++ trunk/ppStack/src/ppStackLoop.c	(revision 27158)
@@ -80,5 +80,8 @@
              psTimerClear("PPSTACK_STEPS"));
     ppStackMemDump("prepare");
-
+    if (options->quality) {
+        // Can't do anything else
+        return true;
+    }
 
     // Convolve inputs
Index: trunk/ppStack/src/ppStackOptions.c
===================================================================
--- trunk/ppStack/src/ppStackOptions.c	(revision 27157)
+++ trunk/ppStack/src/ppStackOptions.c	(revision 27158)
@@ -56,4 +56,5 @@
     options->convVariances = NULL;
     options->num = 0;
+    options->quality = 0;
     options->psf = NULL;
     options->inputSeeing = NULL;
Index: trunk/ppStack/src/ppStackOptions.h
===================================================================
--- trunk/ppStack/src/ppStackOptions.h	(revision 27157)
+++ trunk/ppStack/src/ppStackOptions.h	(revision 27158)
@@ -17,4 +17,5 @@
     psArray *origCovars;                // Original covariances matrices
     int num;                            // Number of inputs
+    int quality;                        // Bad data quality flag
     // Prepare
     pmPSF *psf;                         // Target PSF
Index: trunk/ppStack/src/ppStackPhotometry.c
===================================================================
--- trunk/ppStack/src/ppStackPhotometry.c	(revision 27157)
+++ trunk/ppStack/src/ppStackPhotometry.c	(revision 27158)
@@ -72,7 +72,6 @@
         psErrorStackPrint(stderr, "Unable to perform photometry on image");
         psWarning("Unable to perform photometry on image --- suspect bad data quality.");
-        if (options->stats && psMetadataLookupS32(NULL, options->stats, "QUALITY") == 0) {
-            psMetadataAddS32(options->stats, PS_LIST_TAIL, "QUALITY", PS_META_REPLACE,
-                             "Unable to perform photometry on image", psErrorCodeLast());
+        if (options->quality == 0) {
+            options->quality = psErrorCodeLast();
         }
         psErrorClear();
Index: trunk/ppStack/src/ppStackSetup.c
===================================================================
--- trunk/ppStack/src/ppStackSetup.c	(revision 27157)
+++ trunk/ppStack/src/ppStackSetup.c	(revision 27158)
@@ -48,5 +48,4 @@
         psFree(resolved);
         options->stats = psMetadataAlloc();
-        psMetadataAddS32(options->stats, PS_LIST_TAIL, "QUALITY", 0, "No problems", 0);
     }
 
Index: trunk/ppStack/src/ppStackSources.c
===================================================================
--- trunk/ppStack/src/ppStackSources.c	(revision 27157)
+++ trunk/ppStack/src/ppStackSources.c	(revision 27158)
@@ -127,5 +127,14 @@
     float airmassTerm = NAN;            // Airmass term
     float sumExpTime = 0.0;             // Sum of the exposure time
+    int numGoodImages = 0;              // Number of good images
     for (int i = 0; i < num; i++) {
+        psArray *sources = sourceLists->data[i]; // Source list
+        psAssert(sources, "Don't have source list %d", i);
+        if (sources->n == 0) {
+            options->inputMask->data.PS_TYPE_VECTOR_MASK_DATA[i] |= PPSTACK_MASK_CAL;
+            continue;
+        }
+        numGoodImages++;
+
         pmFPAfile *file = pmFPAfileSelectSingle(config->files, "PPSTACK.INPUT", i); // File of interest
         pmCell *cell = pmFPAviewThisCell(view, file->fpa); // Cell of interest
@@ -145,5 +154,4 @@
         psFree(fake);
 #endif
-
 
         float exptime = psMetadataLookupF32(NULL, cell->concepts, "CELL.EXPOSURE"); // Exposure time
