Index: trunk/psphot/src/psphotForcedReadout.c
===================================================================
--- trunk/psphot/src/psphotForcedReadout.c	(revision 27136)
+++ trunk/psphot/src/psphotForcedReadout.c	(revision 27314)
@@ -58,4 +58,8 @@
     psphotGuessModels (config, view);
 
+    // merge the newly selected sources into the existing list
+    // NOTE: merge OLD and NEW
+    psphotMergeSources (config, view);
+
     // linear PSF fit to source peaks, subtract the models from the image (in PSF mask)
     psphotFitSourcesLinear (config, view, false);
Index: trunk/psphot/src/psphotMergeSources.c
===================================================================
--- trunk/psphot/src/psphotMergeSources.c	(revision 27136)
+++ trunk/psphot/src/psphotMergeSources.c	(revision 27314)
@@ -85,8 +85,17 @@
 
     pmDetections *detections = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.DETECTIONS");
-    psAssert (detections, "missing detections?");
-
-    // XXX allSources or newSources?
-    psArray *sources = detections->allSources;
+    if (!detections) {
+	detections = pmDetectionsAlloc();
+	detections->newSources = psArrayAllocEmpty (100);
+	// save detections on the readout->analysis
+	if (!psMetadataAddPtr (readout->analysis, PS_LIST_TAIL, "PSPHOT.DETECTIONS", PS_META_REPLACE | PS_DATA_UNKNOWN, "psphot detections", detections)) {
+	    psError (PSPHOT_ERR_CONFIG, false, "problem saving detections on readout");
+	    return false;
+	}
+    } else {
+	psMemIncrRefCounter(detections); // so we can free the detections below
+    }
+
+    psArray *sources = detections->newSources;
     psAssert (sources, "missing sources?");
 
@@ -110,5 +119,5 @@
                 source->modelPSF = NULL;
 
-                psArrayAdd (detections->allSources, 100, source);
+                psArrayAdd (detections->newSources, 100, source);
             }
         }
@@ -132,5 +141,5 @@
                 source->modelPSF = NULL;
 
-                psArrayAdd (detections->allSources, 100, source);
+                psArrayAdd (detections->newSources, 100, source);
             }
         }
@@ -138,4 +147,6 @@
 
 finish:
+
+    psFree (detections);
 
     if (!extCMF && !extSourcesTXT) {
