Index: trunk/psphot/src/psphotSourceFits.c
===================================================================
--- trunk/psphot/src/psphotSourceFits.c	(revision 13035)
+++ trunk/psphot/src/psphotSourceFits.c	(revision 13900)
@@ -16,10 +16,10 @@
 bool psphotFitSummary () {
 
-    fprintf (stderr, "fitted %5d psf, %5d blend, %5d ext, %5d dbl : %6.2f sec\n", 
-	     NfitPSF, NfitBlend, NfitEXT, NfitDBL, psTimerMark ("psphot.fits"));
-    return true;
-}
-
-bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf) {
+    fprintf (stderr, "fitted %5d psf, %5d blend, %5d ext, %5d dbl : %6.2f sec\n",
+             NfitPSF, NfitBlend, NfitEXT, NfitDBL, psTimerMark ("psphot.fits"));
+    return true;
+}
+
+bool psphotFitBlend (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal) {
 
     float x, y, dR;
@@ -27,5 +27,5 @@
     // if this source is not a possible blend, just fit as PSF
     if ((source->blends == NULL) || (source->mode & PM_SOURCE_MODE_SATSTAR)) {
-        bool status = psphotFitPSF (readout, source, psf);
+        bool status = psphotFitPSF (readout, source, psf, maskVal);
         return status;
     }
@@ -65,6 +65,6 @@
         model->params->data.F32[PM_PAR_YPOS] = blend->peak->yf;
 
-	// these should never be invalid values
-	// XXX drop these tests eventually
+        // these should never be invalid values
+        // XXX drop these tests eventually
         if (isnan(model->params->data.F32[PM_PAR_I0]))   psAbort("nan in blend fit");
         if (isnan(model->params->data.F32[PM_PAR_XPOS])) psAbort("nan in blend fit");
@@ -83,5 +83,5 @@
 
     // fit PSF model (set/unset the pixel mask)
-    pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF);
+    pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF, maskVal);
 
     // correct model chisq for flux trend
@@ -109,7 +109,7 @@
         psTrace ("psphot", 5, "fitted blend as PSF\n");
 
-	// build cached model and subtract
-	pmSourceCacheModel (blend);
-	pmSourceSub (blend, PM_MODEL_OP_FULL);
+        // build cached model and subtract
+        pmSourceCacheModel (blend, maskVal);
+        pmSourceSub (blend, PM_MODEL_OP_FULL, maskVal);
         blend->mode |=  PM_SOURCE_MODE_SUBTRACTED;
         blend->mode &= ~PM_SOURCE_MODE_TEMPSUB;
@@ -121,6 +121,6 @@
         psTrace ("psphot", 4, "failed on blend 0 of %ld\n", modelSet->n);
         psFree (PSF);
-	psFree (modelSet);
-	psFree (sourceSet);
+        psFree (modelSet);
+        psFree (sourceSet);
         return false;
     }
@@ -134,6 +134,6 @@
 
     // build cached model and subtract
-    pmSourceCacheModel (source);
-    pmSourceSub (source, PM_MODEL_OP_FULL);
+    pmSourceCacheModel (source, maskVal);
+    pmSourceSub (source, PM_MODEL_OP_FULL, maskVal);
     source->mode |=  PM_SOURCE_MODE_SUBTRACTED;
     source->mode &= ~PM_SOURCE_MODE_TEMPSUB;
@@ -141,5 +141,5 @@
 }
 
-bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf) {
+bool psphotFitPSF (pmReadout *readout, pmSource *source, pmPSF *psf, psMaskType maskVal) {
 
     double chiTrend;
@@ -155,5 +155,5 @@
 
     // fit PSF model (set/unset the pixel mask)
-    pmSourceFitModel (source, PSF, PM_SOURCE_FIT_PSF);
+    pmSourceFitModel (source, PSF, PM_SOURCE_FIT_PSF, maskVal);
 
     // correct model chisq for flux trend
@@ -173,6 +173,6 @@
 
     // build cached model and subtract
-    pmSourceCacheModel (source);
-    pmSourceSub (source, PM_MODEL_OP_FULL);
+    pmSourceCacheModel (source, maskVal);
+    pmSourceSub (source, PM_MODEL_OP_FULL, maskVal);
     source->mode |=  PM_SOURCE_MODE_SUBTRACTED;
     source->mode &= ~PM_SOURCE_MODE_TEMPSUB;
@@ -201,5 +201,5 @@
 }
 
-bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf) {
+bool psphotFitBlob (pmReadout *readout, pmSource *source, psArray *sources, pmPSF *psf, psMaskType maskVal) {
 
     bool okEXT, okDBL;
@@ -222,9 +222,9 @@
     pmSource *tmpSrc = pmSourceAlloc ();
 
-    pmModel *EXT = psphotFitEXT (readout, source);
+    pmModel *EXT = psphotFitEXT (readout, source, maskVal);
     okEXT = psphotEvalEXT (tmpSrc, EXT);
     chiEXT = EXT->chisq / EXT->nDOF;
 
-    psArray *DBL = psphotFitDBL (readout, source);
+    psArray *DBL = psphotFitDBL (readout, source, maskVal);
     okDBL  = psphotEvalDBL (tmpSrc, DBL->data[0]);
     okDBL &= psphotEvalDBL (tmpSrc, DBL->data[1]);
@@ -269,6 +269,6 @@
 
     // build cached model and subtract
-    pmSourceCacheModel (source);
-    pmSourceSub (source, PM_MODEL_OP_FULL);
+    pmSourceCacheModel (source, maskVal);
+    pmSourceSub (source, PM_MODEL_OP_FULL, maskVal);
     psTrace ("psphot", 5, "blob as EXT: %f %f\n", EXT->params->data.F32[PM_PAR_XPOS], EXT->params->data.F32[PM_PAR_YPOS]);
 
@@ -294,8 +294,8 @@
 
     // build cached models and subtract
-    pmSourceCacheModel (source);
-    pmSourceSub (source, PM_MODEL_OP_FULL);
-    pmSourceCacheModel (newSrc);
-    pmSourceSub (newSrc, PM_MODEL_OP_FULL);
+    pmSourceCacheModel (source, maskVal);
+    pmSourceSub (source, PM_MODEL_OP_FULL, maskVal);
+    pmSourceCacheModel (newSrc, maskVal);
+    pmSourceSub (newSrc, PM_MODEL_OP_FULL, maskVal);
     psTrace ("psphot", 5, "blob as DBL: %f %f\n", ONE->params->data.F32[PM_PAR_XPOS], ONE->params->data.F32[PM_PAR_YPOS]);
 
@@ -307,5 +307,5 @@
 
 // fit a double PSF source to an extended blob
-psArray *psphotFitDBL (pmReadout *readout, pmSource *source) {
+psArray *psphotFitDBL (pmReadout *readout, pmSource *source, psMaskType maskVal) {
 
     float dx, dy;
@@ -348,9 +348,9 @@
 
     // fit PSF model (set/unset the pixel mask)
-    pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF);
+    pmSourceFitSet (source, modelSet, PM_SOURCE_FIT_PSF, maskVal);
     return (modelSet);
 }
 
-pmModel *psphotFitEXT (pmReadout *readout, pmSource *source) {
+pmModel *psphotFitEXT (pmReadout *readout, pmSource *source, psMaskType maskVal) {
 
     NfitEXT ++;
@@ -359,5 +359,5 @@
     pmModel *EXT = pmSourceModelGuess (source, modelTypeEXT);
     PS_ASSERT (EXT, NULL);
-	
+
     // if (isnan(EXT->params->data.F32[1])) psAbort("nan in ext fit");
 
@@ -369,5 +369,5 @@
 
     // fit EXT (not PSF) model (set/unset the pixel mask)
-    pmSourceFitModel (source, EXT, PM_SOURCE_FIT_EXT);
+    pmSourceFitModel (source, EXT, PM_SOURCE_FIT_EXT, maskVal);
     return (EXT);
 }
