Index: trunk/ippScripts/scripts/diff_skycell.pl
===================================================================
--- trunk/ippScripts/scripts/diff_skycell.pl	(revision 38708)
+++ trunk/ippScripts/scripts/diff_skycell.pl	(revision 38709)
@@ -78,6 +78,8 @@
 # XXX camera is not known here; cannot use filerules... 
 my $logDest = "$outroot.log";
+my $updateMode = 0;
 if ($run_state eq 'update') {
     $logDest .= '.update';
+    $updateMode = 1;
 }
 $ipprc->redirect_to_logfile($logDest) or my_die( "Unable to redirect output", $diff_id, $skycell_id, $PS_EXIT_SYS_ERROR ) if $redirect;
@@ -322,5 +324,6 @@
     }
 
-    # use WARPSTATS if we're updating, as we don't care about the new stuff from the STACK and DIFF STATS recipes
+    # use WARPSTATS if we're updating, as we don't care about the new stuff from the STACK and DIFF STATS recipes.
+    # The only value that we use is -quality
     $recipe_ppstats = 'WARPSTATS';
 }
@@ -351,4 +354,5 @@
 {
     my $command = "$ppSub $outroot";
+    $command .= " -updatemode" if $updateMode;
     $command .= " -inimage $input";
     $command .= " -refimage $template";
Index: trunk/ppSub/src/ppSubArguments.c
===================================================================
--- trunk/ppSub/src/ppSubArguments.c	(revision 38708)
+++ trunk/ppSub/src/ppSubArguments.c	(revision 38709)
@@ -103,4 +103,5 @@
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-save-refconv", 0, "Save reference convolved images?", false);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-visual", 0, "Show diagnostic plots", NULL);
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-updatemode", 0, "update mode?", false);
 
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 2) {
Index: trunk/ppSub/src/ppSubCamera.c
===================================================================
--- trunk/ppSub/src/ppSubCamera.c	(revision 38708)
+++ trunk/ppSub/src/ppSubCamera.c	(revision 38709)
@@ -317,6 +317,7 @@
     checkFileruleFileSave (output, config);
     checkFileruleFileSave (outMask, config);
+    pmFPAfile *outVar = NULL;
     if (inVar && refVar) {
-        pmFPAfile *outVar = defineOutputFile(config, output, false, "PPSUB.OUTPUT.VARIANCE",
+        outVar = defineOutputFile(config, output, false, "PPSUB.OUTPUT.VARIANCE",
                                              PM_FPA_FILE_VARIANCE);
         if (!outVar) {
@@ -325,4 +326,13 @@
         }
 	checkFileruleFileSave (outVar, config);
+    }
+    // If we are in update mode unconditionally save the output files
+    bool updateMode = psMetadataLookupBool(NULL, config->arguments, "-updatemode");
+    if (updateMode) {
+        output->save = true;
+        outMask->save = true;
+        if (outVar) {
+            outVar->save = true;
+        }
     }
 
