Index: trunk/psphot/src/psphotReplaceUnfit.c
===================================================================
--- trunk/psphot/src/psphotReplaceUnfit.c	(revision 12792)
+++ trunk/psphot/src/psphotReplaceUnfit.c	(revision 13035)
@@ -1,4 +1,5 @@
 # include "psphotInternal.h"
 
+// replace the flux for sources which failed
 bool psphotReplaceUnfit (psArray *sources) { 
 
@@ -15,10 +16,5 @@
 
     replace:
-	if (source->modelPSF == NULL) continue;
-
-	psTrace ("psphot", 3, "replacing object at %f,%f\n", 
-		 source->modelPSF->params->data.F32[PM_PAR_XPOS], source->modelPSF->params->data.F32[PM_PAR_YPOS]);
-
-	pmModelAdd (source->pixels, source->mask, source->modelPSF, false, false);
+	pmSourceAdd (source, PM_MODEL_OP_FULL);
 	source->mode &= ~PM_SOURCE_MODE_SUBTRACTED;
 	source->mode &= ~PM_SOURCE_MODE_TEMPSUB;
@@ -40,12 +36,5 @@
       if (!(source->mode & PM_SOURCE_MODE_SUBTRACTED)) continue;
 
-      // select appropriate model
-      pmModel *model = pmSourceGetModel (NULL, source);
-      if (model == NULL) continue;  // model must be defined
-	
-      psTrace ("psphot", 3, "replacing object at %f,%f\n", 
-	       model->params->data.F32[PM_PAR_XPOS], model->params->data.F32[PM_PAR_YPOS]);
-
-      pmModelAdd (source->pixels, source->mask, model, false, false);
+      pmSourceAdd (source, PM_MODEL_OP_FULL);
       source->mode &= ~PM_SOURCE_MODE_SUBTRACTED;
     }
@@ -54,5 +43,5 @@
 }
 
-// add or sub source replace or if the source has 
+// add source, if the source has been subtracted (or if we ignore the state)
 bool psphotAddWithTest (pmSource *source, bool useState) { 
 
@@ -60,20 +49,13 @@
     bool state = !(source->mode & PM_SOURCE_MODE_SUBTRACTED);
     if (state && useState) return true;
-
-    // select appropriate model
-    pmModel *model = pmSourceGetModel (NULL, source);
-    if (model == NULL) return false;  // model must be defined
-    
-    psTrace ("psphot", 3, "replacing object at %f,%f\n", 
-	     model->params->data.F32[PM_PAR_XPOS], model->params->data.F32[PM_PAR_YPOS]);
     
     // replace the model if 1) state says it is missing or 2) useState is false (just do it)
     if (!state || !useState) {
-	pmModelAdd (source->pixels, source->mask, model, false, false);
+	pmSourceAdd (source, PM_MODEL_OP_FULL);
     }
     return true;
 }
 
-// add or sub source replace or if the source has 
+// sub source, if the source has been added (or if we ignore the state)
 bool psphotSubWithTest (pmSource *source, bool useState) { 
 
@@ -82,14 +64,7 @@
     if (state && useState) return true;
 
-    // select appropriate model
-    pmModel *model = pmSourceGetModel (NULL, source);
-    if (model == NULL) return false;  // model must be defined
-    
-    psTrace ("psphot", 3, "replacing object at %f,%f\n", 
-	     model->params->data.F32[PM_PAR_XPOS], model->params->data.F32[PM_PAR_YPOS]);
-    
     // replace the model if 1) state says it is missing or 2) useState is false (just do it)
     if (!state || !useState) {
-	pmModelSub (source->pixels, source->mask, model, false, false);
+	pmSourceSub (source, PM_MODEL_OP_FULL);
     }
     return true;
@@ -102,17 +77,10 @@
     bool newState = !(source->mode & PM_SOURCE_MODE_SUBTRACTED);
     if (curState == newState) return true;
-
-    // select appropriate model
-    pmModel *model = pmSourceGetModel (NULL, source);
-    if (model == NULL) return false;  // model must be defined
-    
-    psTrace ("psphot", 3, "replacing object at %f,%f\n", 
-	     model->params->data.F32[PM_PAR_XPOS], model->params->data.F32[PM_PAR_YPOS]);
     
     if (curState && !newState) {
-	pmModelSub (source->pixels, source->mask, model, false, false);
+	pmSourceSub (source, PM_MODEL_OP_FULL);
     }
     if (newState && !curState) {
-	pmModelAdd (source->pixels, source->mask, model, false, false);
+	pmSourceAdd (source, PM_MODEL_OP_FULL);
     }
     return true;
