Index: /trunk/psphot/src/psphotFitSourcesLinear.c
===================================================================
--- /trunk/psphot/src/psphotFitSourcesLinear.c	(revision 13374)
+++ /trunk/psphot/src/psphotFitSourcesLinear.c	(revision 13375)
@@ -55,4 +55,6 @@
         if (source->type == PM_SOURCE_TYPE_DEFECT) continue;
         if (source->type == PM_SOURCE_TYPE_SATURATED) continue;
+	if (source->type == PM_SOURCE_TYPE_STAR &&
+            source->mode & PM_SOURCE_MODE_SATSTAR) continue;
         if (final) {
             if (source->mode &  PM_SOURCE_MODE_SUBTRACTED) continue;
Index: /trunk/psphot/src/psphotReadout.c
===================================================================
--- /trunk/psphot/src/psphotReadout.c	(revision 13374)
+++ /trunk/psphot/src/psphotReadout.c	(revision 13375)
@@ -63,6 +63,7 @@
     // find the peaks in the image
     psArray *peaks;
+    psArray *footprints = NULL;
     if (useFootprints) {
-       psArray *footprints = psphotFindPeaks (readout, recipe, useFootprints, 1);
+       footprints = psphotFindPeaks (readout, recipe, useFootprints, 1);
        int growRadius = psMetadataLookupS32(NULL, recipe, "FOOTPRINT_GROW_RADIUS");
        if (growRadius > 0) {
@@ -71,7 +72,7 @@
 	   footprints = tmp;
        }
+       psphotCullPeaks(readout->image, readout->weight, recipe, footprints);
 
        peaks = pmFootprintArrayToPeaks(footprints);
-       psFree(footprints);
     } else {
        peaks = psphotFindPeaks (readout, recipe, useFootprints, 1);
@@ -184,9 +185,15 @@
        }
 
-       psphotCullPeaks(readout->image, readout->weight, recipe, newFootprints);
-
-       newPeaks = pmFootprintArrayToPeaks(newFootprints);
-
+       // merge in old peaks
+       const int includePeaks = 0x0 | 0x2; // i.e. just from newFootprints
+       psArray *mergedFootprints = pmMergeFootprintArrays(footprints, newFootprints, includePeaks);
+       psFree(footprints);
        psFree(newFootprints);
+
+       psphotCullPeaks(readout->image, readout->weight, recipe, mergedFootprints);
+
+       newPeaks = pmFootprintArrayToPeaks(mergedFootprints);
+
+       psFree(mergedFootprints);
     } else {
        newPeaks = psphotFindPeaks(readout, recipe, useFootprints, 2);
