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);
+            }
         }
 
