Index: /branches/eam_branches/ipp-20130711/psphot/src/psphotExtendedSourceFits.c
===================================================================
--- /branches/eam_branches/ipp-20130711/psphot/src/psphotExtendedSourceFits.c	(revision 35971)
+++ /branches/eam_branches/ipp-20130711/psphot/src/psphotExtendedSourceFits.c	(revision 35972)
@@ -65,4 +65,6 @@
     psphotVisualShowImage(readout);
 
+    // psphotSaveImage (NULL, readout->image, "test.01.fits");
+
     pmDetections *detections = psMetadataLookupPtr (&status, readout->analysis, "PSPHOT.DETECTIONS");
     psAssert (detections, "missing detections?");
@@ -123,7 +125,11 @@
     }
 
+    // perform full extended source non-linear fits?
+    bool isInteractive = psMetadataLookupBool (&status, recipe, "EXTENDED_SOURCE_FITS_INTERACTIVE");
+    if (!status) isInteractive = false;
+
     // Define source fitting parameters for extended source fits
     pmSourceFitOptions *fitOptions = pmSourceFitOptionsAlloc();
-    fitOptions->mode           = PM_SOURCE_FIT_EXT;
+    fitOptions->mode           = PM_SOURCE_FIT_EXT_AND_SKY;
     fitOptions->saveCovariance = true;  // XXX make this a user option?
     fitOptions->covarFactor    = psImageCovarianceFactorForAperture(readout->covariance, 10.0); // Covariance matrix
@@ -134,4 +140,5 @@
     fitOptions->gainFactorMode   = gainFactorMode;
     fitOptions->chisqConvergence = chisqConvergence;
+    fitOptions->isInteractive    = isInteractive;
 
     // maskVal is used to test for rejected pixels, and must include markVal
@@ -296,41 +303,41 @@
             PS_ARRAY_ADD_SCALAR(job->args, 0, PS_TYPE_S32); // this is used as a return value for Nfail
 
-// set this to 0 to run without threading
-# if (1)	    
-            if (!psThreadJobAddPending(job)) {
-                psError(PS_ERR_UNKNOWN, false, "Unable to guess model.");
-		psFree(AnalysisRegion);
-		psFree (fitOptions);
-		psFree (models);
-		psphotSersicModelClassCleanup();
-                return false;
-            } 
-# else
-	    if (!psphotExtendedSourceFits_Threaded(job)) {
-		psError(PS_ERR_UNKNOWN, false, "Unable to guess model.");
-		psFree(AnalysisRegion);
-		psFree (fitOptions);
-		psFree (models);
-		psphotSersicModelClassCleanup();
-		return false;
+	    if (!isInteractive) {
+		if (!psThreadJobAddPending(job)) {
+		    psError(PS_ERR_UNKNOWN, false, "Unable to guess model.");
+		    psFree(AnalysisRegion);
+		    psFree (fitOptions);
+		    psFree (models);
+		    psphotSersicModelClassCleanup();
+		    return false;
+		} 
+	    } else {
+		// run without threading
+		if (!psphotExtendedSourceFits_Threaded(job)) {
+		    psError(PS_ERR_UNKNOWN, false, "Unable to guess model.");
+		    psFree(AnalysisRegion);
+		    psFree (fitOptions);
+		    psFree (models);
+		    psphotSersicModelClassCleanup();
+		    return false;
+		}
+		psScalar *scalar = NULL;
+		scalar = job->args->data[9];
+		Next += scalar->data.S32;
+		scalar = job->args->data[10];
+		Nconvolve += scalar->data.S32;
+		scalar = job->args->data[11];
+		NconvolvePass += scalar->data.S32;
+		scalar = job->args->data[12];
+		Nplain += scalar->data.S32;
+		scalar = job->args->data[13];
+		NplainPass += scalar->data.S32;
+		scalar = job->args->data[14];
+		Nfaint += scalar->data.S32;
+		scalar = job->args->data[15];
+		Nfail += scalar->data.S32;
+		psFree(job->args->data[3]); // iterator allocated above
+		psFree(job);
 	    }
-	    psScalar *scalar = NULL;
-	    scalar = job->args->data[9];
-	    Next += scalar->data.S32;
-	    scalar = job->args->data[10];
-	    Nconvolve += scalar->data.S32;
-	    scalar = job->args->data[11];
-	    NconvolvePass += scalar->data.S32;
-	    scalar = job->args->data[12];
-	    Nplain += scalar->data.S32;
-	    scalar = job->args->data[13];
-	    NplainPass += scalar->data.S32;
-	    scalar = job->args->data[14];
-	    Nfaint += scalar->data.S32;
-	    scalar = job->args->data[15];
-	    Nfail += scalar->data.S32;
-            psFree(job->args->data[3]); // iterator allocated above
-	    psFree(job);
-# endif
 	}
 
@@ -377,4 +384,6 @@
 
     psphotSersicModelClassCleanup();
+
+    // psphotSaveImage (NULL, readout->image, "test.02.fits");
 
     psphotVisualShowResidualImage (readout, false);
Index: /branches/eam_branches/ipp-20130711/psphot/src/psphotRadiusChecks.c
===================================================================
--- /branches/eam_branches/ipp-20130711/psphot/src/psphotRadiusChecks.c	(revision 35971)
+++ /branches/eam_branches/ipp-20130711/psphot/src/psphotRadiusChecks.c	(revision 35972)
@@ -171,6 +171,7 @@
 # undef MIN_WINDOW
 
-# define MIN_WINDOW 5.0
-# define SCALE1 5.0
+// XXX EAM : 20130724 : for a test, double the window size parameters
+# define MIN_WINDOW 10.0
+# define SCALE1 7.0
 # define PAD_WINDOW 3.0
 
Index: /branches/eam_branches/ipp-20130711/psphot/src/psphotSourceFits.c
===================================================================
--- /branches/eam_branches/ipp-20130711/psphot/src/psphotSourceFits.c	(revision 35971)
+++ /branches/eam_branches/ipp-20130711/psphot/src/psphotSourceFits.c	(revision 35972)
@@ -606,4 +606,7 @@
 	    return model;
 	}
+	// XXX TEST:
+	// pcm->modelConv->params->data.F32[4] = 30.0;
+	// pcm->modelConv->params->data.F32[5] = 30.0;
     }
 
@@ -613,5 +616,5 @@
 	options.mode = PM_SOURCE_FIT_NO_INDEX;
     } else {
-	options.mode = PM_SOURCE_FIT_EXT;
+      options.mode = PM_SOURCE_FIT_EXT_AND_SKY; // XXX note that there may be a conflict with psphotExtendedSourceFits.c:133
     }
     // update the pcm elements if we have changed the circumstance (options.mode or source->pixels)
