Index: branches/pap/ppStack/src/ppStackCombineFinal.c
===================================================================
--- branches/pap/ppStack/src/ppStackCombineFinal.c	(revision 25809)
+++ branches/pap/ppStack/src/ppStackCombineFinal.c	(revision 25810)
@@ -10,5 +10,6 @@
 #include "ppStackLoop.h"
 
-bool ppStackCombineFinal(ppStackThreadData *stack, ppStackOptions *options, pmConfig *config)
+bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack,
+                         ppStackOptions *options, pmConfig *config)
 {
     psAssert(stack, "Require stack");
@@ -30,6 +31,7 @@
         }
 
-        // call: ppStackReadoutFinal(config, outRO, readouts, rejected)
+        // call: ppStackReadoutFinal(config, target, readouts, rejected)
         psThreadJob *job = psThreadJobAlloc("PPSTACK_FINAL_COMBINE"); // Job to start
+        psArrayAdd(job->args, 1, target);
         psArrayAdd(job->args, 1, thread);
         psArrayAdd(job->args, 1, options);
@@ -65,18 +67,17 @@
         }
         if (sumWeights > 0.0) {
-            pmReadout *outRO = options->outRO;  // Output readout
-            outRO->covariance = psImageCovarianceSum(options->covariances);
-            psBinaryOp(outRO->covariance->image, outRO->covariance->image, "/",
+            target->covariance = psImageCovarianceSum(options->covariances);
+            psBinaryOp(target->covariance->image, target->covariance->image, "/",
                        psScalarAlloc(sumWeights, PS_TYPE_F32));
             psFree(options->covariances); options->covariances = NULL;
-            psImageCovarianceTransfer(outRO->variance, outRO->covariance);
+            psImageCovarianceTransfer(target->variance, target->covariance);
         }
     } else {
-        options->outRO->covariance = psImageCovarianceNone();
+        target->covariance = psImageCovarianceNone();
     }
 
 #ifdef TESTING
-    pmStackVisualPlotTestImage(outRO->image, "combined_initial.fits");
-    ppStackWriteImage("combined_final.fits", NULL, outRO->image, config);
+    pmStackVisualPlotTestImage(target->image, "combined_initial.fits");
+    ppStackWriteImage("combined_final.fits", NULL, target->image, config);
 #endif
 
Index: branches/pap/ppStack/src/ppStackLoop.c
===================================================================
--- branches/pap/ppStack/src/ppStackLoop.c	(revision 25809)
+++ branches/pap/ppStack/src/ppStackLoop.c	(revision 25810)
@@ -97,5 +97,5 @@
     // Final combination
     psTrace("ppStack", 2, "Final stack of convolved images....\n");
-    if (!ppStackCombineFinal(stack, options, config)) {
+    if (!ppStackCombineFinal(options->outRO, stack, options, config)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to perform final combination.");
         psFree(stack);
@@ -132,5 +132,5 @@
         }
         psTrace("ppStack", 2, "Stack of unconvolved images....\n");
-        if (!ppStackCombineFinal(stack, options, config)) {
+        if (!ppStackCombineFinal(options->unconvRO, stack, options, config)) {
             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 25809)
+++ branches/pap/ppStack/src/ppStackLoop.h	(revision 25810)
@@ -56,4 +56,5 @@
 // Final combination
 bool ppStackCombineFinal(
+    pmReadout *target,                  // Target readout
     ppStackThreadData *stack,           // Stack
     ppStackOptions *options,            // Options
Index: branches/pap/ppStack/src/ppStackReadout.c
===================================================================
--- branches/pap/ppStack/src/ppStackReadout.c	(revision 25809)
+++ branches/pap/ppStack/src/ppStackReadout.c	(revision 25810)
@@ -39,9 +39,9 @@
 
     psArray *args = job->args;          // Arguments
-    ppStackThread *thread = args->data[0]; // Thread
-    ppStackOptions *options = args->data[1]; // Options
-    pmConfig *config = args->data[2];   // Configuration
-
-    pmReadout *outRO = options->outRO;  // Output readout
+    pmReadout *target = args->data[0];  // Output readout
+    ppStackThread *thread = args->data[1]; // Thread
+    ppStackOptions *options = args->data[2]; // Options
+    pmConfig *config = args->data[3];   // Configuration
+
     psVector *mask = options->inputMask; // Mask for inputs
     psArray *rejected = options->rejected; // Rejected pixels
@@ -49,5 +49,5 @@
     psVector *addVariance = options->matchChi2; // Additional variance when rejecting
 
-    bool status = ppStackReadoutFinal(config, outRO, thread->readouts, mask, rejected,
+    bool status = ppStackReadoutFinal(config, target, thread->readouts, mask, rejected,
                                       weightings, addVariance); // Status of operation
 
Index: branches/pap/ppStack/src/ppStackThread.c
===================================================================
--- branches/pap/ppStack/src/ppStackThread.c	(revision 25809)
+++ branches/pap/ppStack/src/ppStackThread.c	(revision 25810)
@@ -277,5 +277,5 @@
 
     {
-        psThreadTask *task = psThreadTaskAlloc("PPSTACK_FINAL_COMBINE", 3);
+        psThreadTask *task = psThreadTaskAlloc("PPSTACK_FINAL_COMBINE", 4);
         task->function = &ppStackReadoutFinalThread;
         psThreadTaskAdd(task);
