Index: trunk/ppSub/src/ppSub.h
===================================================================
--- trunk/ppSub/src/ppSub.h	(revision 28120)
+++ trunk/ppSub/src/ppSub.h	(revision 28121)
@@ -111,5 +111,6 @@
 
 /// Perform Variance correction (rescale within a modest range)
-bool ppSubVarianceRescale(pmConfig *config   ///< Configuration
+bool ppSubVarianceRescale(pmConfig *config,   ///< Configuration
+                          ppSubData *data     ///< Processing data
     );
 
Index: trunk/ppSub/src/ppSubErrorCodes.dat
===================================================================
--- trunk/ppSub/src/ppSubErrorCodes.dat	(revision 28120)
+++ trunk/ppSub/src/ppSubErrorCodes.dat	(revision 28121)
@@ -11,2 +11,3 @@
 NO_OVERLAP		No overlap between input and skycell
 PROG			Programming error
+VARIANCE		Variance renormalisation out of bounds
Index: trunk/ppSub/src/ppSubLoop.c
===================================================================
--- trunk/ppSub/src/ppSubLoop.c	(revision 28120)
+++ trunk/ppSub/src/ppSubLoop.c	(revision 28121)
@@ -119,7 +119,12 @@
 
     // Perform Variance correction (rescale within a modest range)
-    if (!ppSubVarianceRescale(config)) {
+    if (!ppSubVarianceRescale(config, data)) {
         psError(psErrorCodeLast(), false, "Unable to rescale variance.");
         return false;
+    }
+
+    if (data->quality) {
+        // Done all we can do up to this point
+        return true;
     }
 
Index: trunk/ppSub/src/ppSubVarianceRescale.c
===================================================================
--- trunk/ppSub/src/ppSubVarianceRescale.c	(revision 28120)
+++ trunk/ppSub/src/ppSubVarianceRescale.c	(revision 28121)
@@ -22,5 +22,5 @@
 #include "ppSub.h"
 
-bool ppSubVarianceRescale(pmConfig *config)
+bool ppSubVarianceRescale(pmConfig *config, ppSubData *data)
 {
     psAssert(config, "Require configuration");
@@ -60,4 +60,13 @@
     }
 
-    return pmReadoutVarianceRenormalise(readout, maskBad, num, minValid, maxValid);
+    if (!pmReadoutVarianceRenormalise(readout, maskBad, num, minValid, maxValid)) {
+        psErrorStackPrint(stderr, "Unable to renormalise variances");
+        psWarning("Unable to renormalise variances --- suspect bad data quality.");
+        // Allow the convolved and subtracted images to be written
+        ppSubDataQuality(data, PPSUB_ERR_VARIANCE,
+                         PPSUB_FILES_INPUT | PPSUB_FILES_PHOT_SUB | PPSUB_FILES_PHOT_INV |
+                         PPSUB_FILES_PSF | PPSUB_FILES_PHOT);
+    }
+
+    return true;
 }
