Index: trunk/psModules/src/camera/pmFPAfileDefine.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 23343)
+++ trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 23354)
@@ -719,5 +719,5 @@
 }
 
-pmFPAfile *pmFPAfileDefineFromRun(bool *success, pmConfig *config, const char *filename)
+pmFPAfile *pmFPAfileDefineFromRun(bool *success, pmFPAfile *bind, pmConfig *config, const char *filename)
 {
     PS_ASSERT_PTR_NON_NULL(config, NULL);
@@ -732,5 +732,5 @@
     }
 
-    pmFPAfile *file = fpaFileDefineFromArray(config, NULL, filename, filenames); // File of interest
+    pmFPAfile *file = fpaFileDefineFromArray(config, bind, filename, filenames); // File of interest
     psFree(filenames);
 
@@ -742,4 +742,49 @@
 }
 
+psArray *pmFPAfileDefineMultipleFromRun(bool *success, psArray *bind, pmConfig *config, const char *filename)
+{
+    PS_ASSERT_PTR_NON_NULL(config, NULL);
+    PS_ASSERT_STRING_NON_EMPTY(filename, NULL);
+
+    if (success) {
+        *success = false;
+    }
+
+    psArray *files = pmConfigRunFileGet(config, filename); // Filenames used, to return
+    if (!files || files->n == 0) {
+        if (success) {
+            *success = true;
+        }
+        return NULL;
+    }
+    if (bind && files->n != bind->n) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true,
+                "Length of filenames (%ld) and bind files (%ld) does not match.",
+                files->n, bind->n);
+        psFree(files);
+        return NULL;
+    }
+
+    psArray *dummy = psArrayAlloc(1);   // Dummy array of single filename
+    for (int i = 0; i < files->n; i++) {
+        psFree(dummy->data[0]);
+        dummy->data[0] = files->data[i];
+        pmFPAfile *bindFile = bind ? bind->data[i] : NULL; // File to which to bind
+        files->data[i] = psMemIncrRefCounter(fpaFileDefineFromArray(config, bindFile, filename, dummy));
+        if (!files->data[i]) {
+            psError(PS_ERR_UNKNOWN, false, "Unable to define file %s %d", filename, i);
+            psFree(dummy);
+            psFree(files);
+            return NULL;
+        }
+    }
+    psFree(dummy);
+
+    if (success) {
+        *success = true;
+    }
+
+    return files;
+}
 
 // define the named pmFPAfile from the camera->config
Index: trunk/psModules/src/camera/pmFPAfileDefine.h
===================================================================
--- trunk/psModules/src/camera/pmFPAfileDefine.h	(revision 23343)
+++ trunk/psModules/src/camera/pmFPAfileDefine.h	(revision 23354)
@@ -67,8 +67,18 @@
 pmFPAfile *pmFPAfileDefineFromRun(
     bool *found,                        ///< Found files?
+    pmFPAfile *bind,                    ///< File to which to bind, or NULL
     pmConfig *config,                   ///< Configuration
     const char *filename                ///< Name of file
     );
 
+/// Define multiple files based on the filenames in the RUN metadata in the configuration
+///
+/// An array of the files defined is returned
+psArray *pmFPAfileDefineMultipleFromRun(
+    bool *found,                        ///< Found files?
+    psArray *bind,                      ///< Files to which to bind, or NULL
+    pmConfig *config,                   ///< Configuration
+    const char *filename                ///< Name of file
+    );
 
 // look for the given argname on the argument list.  find the give filename from the file rules
