Index: trunk/ppStack/src/ppStackArguments.c
===================================================================
--- trunk/ppStack/src/ppStackArguments.c	(revision 16693)
+++ trunk/ppStack/src/ppStackArguments.c	(revision 16704)
@@ -124,4 +124,8 @@
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-variance", 0, "Use variance for rejection?", false);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-safe", 0, "Play safe with small numbers of pixels to combine?", false);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-temp-image", 0, "Suffix for temporary images", NULL);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-temp-mask", 0, "Suffix for temporary masks", NULL);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-temp-weight", 0, "Suffix for temporary weight maps", NULL);
+    psMetadataAddBool(arguments, PS_LIST_TAIL, "-temp-delete", 0, "Delete temporary files on completion?", false);
 
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 3) {
@@ -188,4 +192,15 @@
     }
 
+    valueArgStr(config, arguments, "-temp-image",  "TEMP.IMAGE",  config->arguments);
+    valueArgStr(config, arguments, "-temp-mask",   "TEMP.MASK",   config->arguments);
+    valueArgStr(config, arguments, "-temp-weight", "TEMP.WEIGHT", config->arguments);
+
+    if (psMetadataLookupBool(NULL, arguments, "-temp-delete") ||
+        psMetadataLookupBool(NULL, recipe, "TEMP.DELETE")) {
+        psMetadataAddBool(config->arguments, PS_LIST_TAIL, "TEMP.DELETE", 0,
+                          "Delete temporary files on completion?", true);
+    }
+
+
     psTrace("ppStack", 1, "Done reading command-line arguments\n");
     psFree(arguments);
Index: trunk/ppStack/src/ppStackLoop.c
===================================================================
--- trunk/ppStack/src/ppStackLoop.c	(revision 16693)
+++ trunk/ppStack/src/ppStackLoop.c	(revision 16704)
@@ -4,4 +4,5 @@
 
 #include <stdio.h>
+#include <unistd.h>
 #include <string.h>
 #include <pslib.h>
@@ -11,5 +12,5 @@
 #include "ppStack.h"
 
-#define TESTING
+//#define TESTING
 
 // Here follows lists of files for activation/deactivation at various stages.  Each must be NULL-terminated.
@@ -185,7 +186,15 @@
     assert(config);
 
+    bool mdok;                          // Status of MD lookup
     psMaskType maskBlank = psMetadataLookupU8(NULL, config->arguments, "MASK.BLANK"); // Mask for blank reg.
-
-    bool mdok;                          // Status of MD lookup
+    bool tempDelete = psMetadataLookupBool(&mdok, config->arguments, "TEMP.DELETE"); // Delete temporary files?
+    const char *tempImage = psMetadataLookupStr(NULL, config->arguments, "TEMP.IMAGE"); // Suffix for temporary images
+    const char *tempMask = psMetadataLookupStr(NULL, config->arguments, "TEMP.MASK"); // Suffix for temporary masks
+    const char *tempWeight = psMetadataLookupStr(NULL, config->arguments, "TEMP.WEIGHT"); // Suffix for temporary weight (variance) maps
+    if (!tempImage || !tempMask || !tempWeight) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unable to find TEMP.IMAGE, TEMP.MASK and TEMP.WEIGHT");
+        return false;
+    }
+
     const char *statsName = psMetadataLookupStr(&mdok, config->arguments, "STATS"); // Filename for statistics
     psMetadata *stats = NULL;           // Container for statistics
@@ -286,5 +295,4 @@
     }
 
-    const char *suffix = "conv.fits";   // Suffix for convolved images; ultimately this will be from recipe
     const char *outName = psMetadataLookupStr(NULL, config->arguments, "OUTPUT"); // Output root
     assert(outName);
@@ -294,7 +302,7 @@
     for (int i = 0; i < num; i++) {
         psString imageName = NULL, maskName = NULL, weightName = NULL; // Names for convolved images
-        psStringAppend(&imageName, "%s.im-%d.%s", outName, i, suffix);
-        psStringAppend(&maskName, "%s.mk-%d.%s", outName, i, suffix);
-        psStringAppend(&weightName, "%s.wt-%d.%s", outName, i, suffix);
+        psStringAppend(&imageName, "%s.%d.%s", outName, i, tempImage);
+        psStringAppend(&maskName, "%s.%d.%s", outName, i, tempMask);
+        psStringAppend(&weightName, "%s.%d.%s", outName, i, tempWeight);
         imageNames->data[i] = imageName;
         maskNames->data[i] = maskName;
@@ -508,4 +516,8 @@
             psFitsClose(maskFits->data[i]);
             psFitsClose(weightFits->data[i]);
+            if (tempDelete && (unlink(imageNames->data[i]) || unlink(maskNames->data[i]) ||
+                               unlink(weightNames->data[i]))) {
+                psWarning("Unable to delete temporary files for image %d", i);
+            }
         }
 
Index: trunk/ppStack/src/ppStackReadout.c
===================================================================
--- trunk/ppStack/src/ppStackReadout.c	(revision 16693)
+++ trunk/ppStack/src/ppStackReadout.c	(revision 16704)
@@ -12,8 +12,7 @@
 #define WCS_TOLERANCE 0.001             // Tolerance for WCS
 
-#define REJECTION_FILES                 // Write rejection mask?
-#define INSPECTION_FILES                // Write inspection mask?
-#define COMBINED_FILES                  // Write combined images?
-
+//#define REJECTION_FILES                 // Write rejection mask?
+//#define INSPECTION_FILES                // Write inspection mask?
+//#define COMBINED_FILES                  // Write combined images?
 
 
