Index: /trunk/psphot/src/psphotReplaceUnfit.c
===================================================================
--- /trunk/psphot/src/psphotReplaceUnfit.c	(revision 5774)
+++ /trunk/psphot/src/psphotReplaceUnfit.c	(revision 5774)
@@ -0,0 +1,57 @@
+# include "psphot.h"
+
+bool psphotReplaceUnfit (psArray *sources) { 
+
+    bool status;
+    float x;
+    float y;
+
+    psTimerStart ("psphot");
+
+    for (int i = 0; i < sources->n; i++) {
+	pmSource *source = sources->data[i];
+
+	// skip non-astronomical objects (very likely defects)
+	// these were never fitted and subtracted
+	if (source->mode &  PM_SOURCE_BLEND) continue;
+	if (source->type == PM_SOURCE_DEFECT) continue; 
+	if (source->type == PM_SOURCE_SATURATED) continue;
+
+	// need to skip the successful fits
+	if (source->type == PM_SOURCE_STAR) {
+	    if (source->mode & PM_SOURCE_FAIL) goto subPSF;
+	    if (source->mode & PM_SOURCE_POOR) goto subPSF;
+	    continue;
+
+	subPSF:
+	    pmModel  *model = source->modelPSF;
+
+	    x = model->params->data.F32[2];
+	    y = model->params->data.F32[3];
+
+	    psImageKeepCircle (source->mask, x, y, model->radius, "OR", PSPHOT_MASK_MARKED);
+	    pmSourceAddModel (source->pixels, source->mask, model, false, false);
+	    psImageKeepCircle (source->mask, x, y, model->radius, "AND", ~PSPHOT_MASK_MARKED);
+	    continue;
+	}
+
+	if (source->type == PM_SOURCE_GALAXY) {
+	    if (source->mode & PM_SOURCE_FAIL) goto subFLT;
+	    if (source->mode & PM_SOURCE_POOR) goto subFLT;
+	    continue;
+
+	subPSF:
+	    pmModel  *model = source->modelFLT;
+
+	    x = model->params->data.F32[2];
+	    y = model->params->data.F32[3];
+
+	    psImageKeepCircle (source->mask, x, y, model->radius, "OR", PSPHOT_MASK_MARKED);
+	    pmSourceAddModel (source->pixels, source->mask, model, false, false);
+	    psImageKeepCircle (source->mask, x, y, model->radius, "AND", ~PSPHOT_MASK_MARKED);
+	    continue;
+	}
+    }
+    psLogMsg ("psphot.replace", 4, "replace models: %f (%d objects)\n", psTimerMark ("psphot"), sources->n);
+    return true;
+}
