Index: trunk/ppStack/src/ppStackLoop.c
===================================================================
--- trunk/ppStack/src/ppStackLoop.c	(revision 16834)
+++ trunk/ppStack/src/ppStackLoop.c	(revision 16836)
@@ -162,5 +162,6 @@
 static bool writeImage(const char *name, // Name of image
                        psMetadata *header, // Header
-                       const psImage *image // Image
+                       const psImage *image, // Image
+                       pmConfig *config // Configuration
                        )
 {
@@ -168,14 +169,19 @@
     assert(image);
 
-    psFits *fits = psFitsOpen(name, "w");
+    psString resolved = pmConfigConvertFilename(name, config, true); // Resolved file name
+    psFits *fits = psFitsOpen(resolved, "w");
     if (!fits) {
-        psError(PS_ERR_IO, false, "Unable to open FITS file to write image.");
+        psError(PS_ERR_IO, false, "Unable to open FITS file %s to write image.", resolved);
+        psFree(resolved);
         return false;
     }
     if (!psFitsWriteImage(fits, header, image, 0, NULL)) {
-        psError(PS_ERR_IO, false, "Unable to write FITS image.");
+        psError(PS_ERR_IO, false, "Unable to write FITS image %s.", resolved);
+        psFitsClose(fits);
+        psFree(resolved);
         return false;
     }
     psFitsClose(fits);
+    psFree(resolved);
     return true;
 }
@@ -344,7 +350,7 @@
         pmHDU *hdu = readout->parent->parent->parent->hdu; // HDU for convolved image
         assert(hdu);
-        writeImage(imageNames->data[i],  hdu->header, readout->image);
-        writeImage(maskNames->data[i],   hdu->header, readout->mask);
-        writeImage(weightNames->data[i], hdu->header, readout->weight);
+        writeImage(imageNames->data[i],  hdu->header, readout->image, config);
+        writeImage(maskNames->data[i],   hdu->header, readout->mask, config);
+        writeImage(weightNames->data[i], hdu->header, readout->weight, config);
 #endif
 
@@ -389,7 +395,22 @@
         psArray *weightFits = psArrayAlloc(num);
         for (int i = 0; i < num; i++) {
-            imageFits->data[i] = psFitsOpen(imageNames->data[i], "r");
-            maskFits->data[i] = psFitsOpen(maskNames->data[i], "r");
-            weightFits->data[i] = psFitsOpen(weightNames->data[i], "r");
+            // Resolved names
+            psString imageResolved = pmConfigConvertFilename(imageNames->data[i], config, false);
+            psString maskResolved = pmConfigConvertFilename(maskNames->data[i], config, false);
+            psString weightResolved = pmConfigConvertFilename(weightNames->data[i], config, false);
+            imageFits->data[i] = psFitsOpen(imageResolved, "r");
+            maskFits->data[i] = psFitsOpen(maskResolved, "r");
+            weightFits->data[i] = psFitsOpen(weightResolved, "r");
+            psFree(imageResolved);
+            psFree(maskResolved);
+            psFree(weightResolved);
+            if (!imageFits->data[i] || !maskFits->data[i] || !weightFits->data[i]) {
+                psError(PS_ERR_UNKNOWN, false, "Unable to open convolved files %s, %s, %s",
+                        (char*)imageNames->data[i], (char*)maskNames->data[i], (char*)weightNames->data[i]);
+                psFree(cells);
+                psFree(subKernels);
+                psFree(subRegions);
+                return false;
+            }
         }
 
