Index: branches/pap/ppStack/src/ppStack.h
===================================================================
--- branches/pap/ppStack/src/ppStack.h	(revision 25912)
+++ branches/pap/ppStack/src/ppStack.h	(revision 25924)
@@ -85,4 +85,5 @@
                          const psVector *addVariance, // Additional variance for rejection
                          bool full,                   // Combine full image?
+                         bool safety,                 // Enable safety switch?
                          const psVector *norm         // Normalisations to apply
     );
Index: branches/pap/ppStack/src/ppStackCombineFinal.c
===================================================================
--- branches/pap/ppStack/src/ppStackCombineFinal.c	(revision 25912)
+++ branches/pap/ppStack/src/ppStackCombineFinal.c	(revision 25924)
@@ -11,5 +11,5 @@
 
 bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack, psArray *covariances,
-                         ppStackOptions *options, pmConfig *config, bool full, bool normalise)
+                         ppStackOptions *options, pmConfig *config, bool full, bool safe, bool normalise)
 {
     psAssert(stack, "Require stack");
@@ -42,4 +42,5 @@
         psArrayAdd(job->args, 1, config);
         PS_ARRAY_ADD_SCALAR(job->args, full, PS_TYPE_U8);
+        PS_ARRAY_ADD_SCALAR(job->args, safe, PS_TYPE_U8);
         PS_ARRAY_ADD_SCALAR(job->args, normalise, PS_TYPE_U8);
         if (!psThreadJobAddPending(job)) {
Index: branches/pap/ppStack/src/ppStackLoop.c
===================================================================
--- branches/pap/ppStack/src/ppStackLoop.c	(revision 25912)
+++ branches/pap/ppStack/src/ppStackLoop.c	(revision 25924)
@@ -97,5 +97,6 @@
     // Final combination
     psTrace("ppStack", 2, "Final stack of convolved images....\n");
-    if (!ppStackCombineFinal(options->outRO, stack, options->convCovars, options, config, false, false)) {
+    if (!ppStackCombineFinal(options->outRO, stack, options->convCovars, options, config,
+                             false, false, false)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to perform final combination.");
         psFree(stack);
@@ -132,5 +133,6 @@
         }
         psTrace("ppStack", 2, "Stack of unconvolved images....\n");
-        if (!ppStackCombineFinal(options->unconvRO, stack, options->origCovars, options, config, true, true)) {
+        if (!ppStackCombineFinal(options->unconvRO, stack, options->origCovars, options, config,
+                                 true, true, true)) {
             psError(PS_ERR_UNKNOWN, false, "Unable to perform unconvolved combination.");
             psFree(stack);
Index: branches/pap/ppStack/src/ppStackLoop.h
===================================================================
--- branches/pap/ppStack/src/ppStackLoop.h	(revision 25912)
+++ branches/pap/ppStack/src/ppStackLoop.h	(revision 25924)
@@ -62,4 +62,5 @@
     pmConfig *config,                   // Configuration
     bool full,                          // Combine full image?
+    bool safe,                          // Allow safe combination?
     bool norm                           // Normalise images?
     );
Index: branches/pap/ppStack/src/ppStackReadout.c
===================================================================
--- branches/pap/ppStack/src/ppStackReadout.c	(revision 25912)
+++ branches/pap/ppStack/src/ppStackReadout.c	(revision 25924)
@@ -44,5 +44,6 @@
     pmConfig *config = args->data[3];   // Configuration
     bool full = PS_SCALAR_VALUE(args->data[4], U8); // Combine full image?
-    bool normalise = PS_SCALAR_VALUE(args->data[5], U8); // Normalise images?
+    bool safety = PS_SCALAR_VALUE(args->data[5], U8);    // Safety switch on?
+    bool normalise = PS_SCALAR_VALUE(args->data[6], U8); // Normalise images?
 
     psVector *mask = options->inputMask; // Mask for inputs
@@ -53,5 +54,5 @@
 
     bool status = ppStackReadoutFinal(config, target, thread->readouts, mask, rejected,
-                                      weightings, addVariance, full, norm); // Status of operation
+                                      weightings, addVariance, full, safety, norm); // Status of operation
 
     thread->busy = false;
@@ -183,5 +184,5 @@
 bool ppStackReadoutFinal(const pmConfig *config, pmReadout *outRO, const psArray *readouts,
                          const psVector *mask, const psArray *rejected, const psVector *weightings,
-                         const psVector *addVariance, bool full, const psVector *norm)
+                         const psVector *addVariance, bool full, bool safety, const psVector *norm)
 {
     assert(config);
@@ -216,5 +217,5 @@
     if (rejected) {
         // We have rejection from a previous combination: combine without flagging pixels to inspect
-        safe = false;
+        safe &= safety;
         iter = 0;
         combineRej = NAN;
Index: branches/pap/ppStack/src/ppStackThread.c
===================================================================
--- branches/pap/ppStack/src/ppStackThread.c	(revision 25912)
+++ branches/pap/ppStack/src/ppStackThread.c	(revision 25924)
@@ -282,5 +282,5 @@
 
     {
-        psThreadTask *task = psThreadTaskAlloc("PPSTACK_FINAL_COMBINE", 6);
+        psThreadTask *task = psThreadTaskAlloc("PPSTACK_FINAL_COMBINE", 7);
         task->function = &ppStackReadoutFinalThread;
         psThreadTaskAdd(task);
