Index: /trunk/psphot/src/psphotMergeSources.c
===================================================================
--- /trunk/psphot/src/psphotMergeSources.c	(revision 38388)
+++ /trunk/psphot/src/psphotMergeSources.c	(revision 38389)
@@ -64,5 +64,5 @@
 // only expect a single entry for PSPHOT.INPUT.CMF and PSPHOT.SOURCES.TEXT, so we can only
 // associate input sources with a single entry for the filerule
-bool psphotLoadExtSources (pmConfig *config, const pmFPAview *view, const char *filerule) {
+bool psphotLoadExtSourcesReadout (pmConfig *config, const pmFPAview *view, const char *filerule, int index) {
 
     bool status;
@@ -70,5 +70,4 @@
     pmDetections *extCFF = NULL;
     psArray *extSourcesTXT = NULL;
-    int index = 0;
 
     // find the currently selected readout
@@ -197,4 +196,16 @@
     psLogMsg ("psphot", 3, "%d external sources (%d cmf, %d cff, %d text) merged to yield %ld total sources",
               nCMF + nCFF + nTXT, nCMF, nCFF, nTXT, sources->n);
+    return true;
+}
+bool psphotLoadExtSources(pmConfig *config, const pmFPAview *view, const char *filerule) {
+    int num = psphotFileruleCount(config, filerule);
+
+    // loop over the available readouts
+    for (int i = 0; i < num; i++) {
+        if (!psphotLoadExtSourcesReadout (config, view, filerule, i)) {
+            psError (PSPHOT_ERR_CONFIG, false, "failed to load sources for %s entry %d", filerule, i);
+            return false;
+        }
+    }
     return true;
 }
