Index: trunk/ppSub/src/ppSubCamera.c
===================================================================
--- trunk/ppSub/src/ppSubCamera.c	(revision 23399)
+++ trunk/ppSub/src/ppSubCamera.c	(revision 23448)
@@ -66,10 +66,12 @@
 static pmFPAfile *defineOutputFile(pmConfig *config, // Configuration
                                    pmFPAfile *template,    // File to use as basis for definition
+                                   bool source, // Is template a source (T), or for binding (F)?
                                    char *filerule,     // Name of file rule
-                                   pmFPAfileType fileType // Type of file
+                                   pmFPAfileType fileType, // Type of file
     )
 {
 
-    pmFPAfile *file = pmFPAfileDefineFromFile(config, template, 1, 1, filerule);
+    pmFPAfile *file = source ? pmFPAfileDefineFromFile(config, template, 1, 1, filerule) :
+        pmFPAfileDefineOutput(config, template->fpa, filerule);
     if (!file) {
         psError(PS_ERR_IO, false, _("Unable to generate output file from %s"), filerule);
@@ -160,6 +162,6 @@
 
     // Output image
-    pmFPAfile *output = defineOutputFile(config, input, "PPSUB.OUTPUT", PM_FPA_FILE_IMAGE);
-    pmFPAfile *outMask = defineOutputFile(config, output, "PPSUB.OUTPUT.MASK", PM_FPA_FILE_MASK);
+    pmFPAfile *output = defineOutputFile(config, input, true, "PPSUB.OUTPUT", PM_FPA_FILE_IMAGE);
+    pmFPAfile *outMask = defineOutputFile(config, output, false, "PPSUB.OUTPUT.MASK", PM_FPA_FILE_MASK);
     if (!output || !outMask) {
         psError(PS_ERR_UNKNOWN, false, "Unable to define output files");
@@ -170,5 +172,5 @@
     pmFPAfile *outVar = NULL;
     if (inVar && refVar) {
-        outVar = defineOutputFile(config, output, "PPSUB.OUTPUT.VARIANCE", PM_FPA_FILE_VARIANCE);
+        outVar = defineOutputFile(config, output, false, "PPSUB.OUTPUT.VARIANCE", PM_FPA_FILE_VARIANCE);
         if (!outVar) {
             psError(PS_ERR_UNKNOWN, false, "Unable to define output files");
@@ -180,6 +182,7 @@
 
     // Convolved input image
-    pmFPAfile *inConvImage = defineOutputFile(config, input, "PPSUB.INPUT.CONV", PM_FPA_FILE_IMAGE);
-    pmFPAfile *inConvMask = defineOutputFile(config, input, "PPSUB.INPUT.CONV.MASK", PM_FPA_FILE_MASK);
+    pmFPAfile *inConvImage = defineOutputFile(config, input, true, "PPSUB.INPUT.CONV", PM_FPA_FILE_IMAGE);
+    pmFPAfile *inConvMask = defineOutputFile(config, inConvImage, false, "PPSUB.INPUT.CONV.MASK",
+                                             PM_FPA_FILE_MASK);
     if (!inConvImage || !inConvMask) {
         psError(PS_ERR_UNKNOWN, false, "Unable to define output files");
@@ -187,5 +190,5 @@
     }
     if (inVar) {
-        pmFPAfile *inConvVar = defineOutputFile(config, input, "PPSUB.INPUT.CONV.VARIANCE",
+        pmFPAfile *inConvVar = defineOutputFile(config, inConvImage, false, "PPSUB.INPUT.CONV.VARIANCE",
                                                 PM_FPA_FILE_VARIANCE);
         if (!inConvVar) {
@@ -196,6 +199,7 @@
 
     // Convolved ref image
-    pmFPAfile *refConvImage = defineOutputFile(config, input, "PPSUB.REF.CONV", PM_FPA_FILE_IMAGE);
-    pmFPAfile *refConvMask = defineOutputFile(config, input, "PPSUB.REF.CONV.MASK", PM_FPA_FILE_MASK);
+    pmFPAfile *refConvImage = defineOutputFile(config, input, true, "PPSUB.REF.CONV", PM_FPA_FILE_IMAGE);
+    pmFPAfile *refConvMask = defineOutputFile(config, refConvImage, false, "PPSUB.REF.CONV.MASK",
+                                              PM_FPA_FILE_MASK);
     if (!refConvImage || !refConvMask) {
         psError(PS_ERR_UNKNOWN, false, "Unable to define output files");
@@ -203,5 +207,5 @@
     }
     if (refVar) {
-        pmFPAfile *refConvVar = defineOutputFile(config, input, "PPSUB.REF.CONV.VARIANCE",
+        pmFPAfile *refConvVar = defineOutputFile(config, refConvImage, false, "PPSUB.REF.CONV.VARIANCE",
                                                  PM_FPA_FILE_VARIANCE);
         if (!refConvVar) {
