Index: trunk/psphot/src/apply_psf_model.c
===================================================================
--- trunk/psphot/src/apply_psf_model.c	(revision 4114)
+++ trunk/psphot/src/apply_psf_model.c	(revision 4115)
@@ -22,5 +22,8 @@
     keep           = psRegionForImage (keep, image, keep);
 
-    // set the object surfact-brightness limit for fitted pixels
+    float shapeNsigma = psMetadataLookupF32 (&status, config, "PSF_SHAPE_NSIGMA");
+    float snFaint     = psMetadataLookupF32 (&status, config, "FAINT_SN_LIM");
+
+    // set the object surface-brightness limit for fitted pixels
     float FLUX_LIMIT  = FIT_NSIGMA * sky->sampleStdev;
     psLogMsg ("psphot.apply_psf_model", 3, "fitting pixels with at least %f object counts\n", FLUX_LIMIT);
@@ -31,4 +34,7 @@
     for (int i = 0; i < sources->n; i++) {
 	psSource *source = sources->data[i];
+
+	// skip the existing PSF stars 
+	// XXX drop this -- refit?
 	if (source->modelPSF != NULL) continue;
 
@@ -55,9 +61,12 @@
 	pmSourceMaskSaturated (source, SATURATE);
 
-	// fit as PSF, not FLT (drop poor fits)
+	// fit as PSF, not FLT (skip poor fits)
 	if (!pmSourceFitModel (source, model, true)) continue;
 	source->modelPSF = model;
 	Niter += model[0].nIter;
 	Nfit ++;
+
+	mark_psf_source (source);
+	subtract_psf_source (source);
     }
     psLogMsg ("psphot", 3, "fit PSF models: %f sec for %d objects (%d total iterations)\n", psTimerMark ("psphot"), Nfit, Niter);
