Index: /branches/eam_branches/ipp-20130509/psphot/src/psphotModelTestReadout.c
===================================================================
--- /branches/eam_branches/ipp-20130509/psphot/src/psphotModelTestReadout.c	(revision 35658)
+++ /branches/eam_branches/ipp-20130509/psphot/src/psphotModelTestReadout.c	(revision 35659)
@@ -191,11 +191,7 @@
 	fprintf (stderr, "guess: %f @ (%f, %f)\n", params[6]*180/M_PI, params[4], params[5]);
     } else {
-	// list model input shape
-	psEllipseShape shape;
-	shape.sx  = 1.4 / model->params->data.F32[4];
-	shape.sy  = 1.4 / model->params->data.F32[5];
-	shape.sxy = model->params->data.F32[6];
-	axes = psEllipseShapeToAxes (shape, 20.0);
-	fprintf (stderr, "guess: %f @ (%f, %f)\n", axes.theta*180/M_PI, axes.major, axes.minor);
+	bool useReff = pmModelUseReff (modelType);
+	pmModelParamsToAxes (&axes, params[PM_PAR_SXX], params[PM_PAR_SXY], params[PM_PAR_SYY], useReff);
+	fprintf (stderr, "guess: %f @ (%f, %f) : %f\n", axes.theta*180/M_PI, axes.major, axes.minor, params[PM_PAR_SXY]);
     }
 
@@ -222,4 +218,12 @@
     fitOptions->covarFactor   = psImageCovarianceFactorForAperture(readout->covariance, 10.0); // Covariance matrix
 
+    bool chisqConvergence = psMetadataLookupBool (&status, recipe, "LMM_FIT_CHISQ_CONVERGENCE"); // Fit tolerance
+    if (!status) chisqConvergence = true;
+    fitOptions->chisqConvergence = chisqConvergence;
+
+    int gainFactorMode = psMetadataLookupS32 (&status, recipe, "LMM_FIT_GAIN_FACTOR_MODE"); // Fit tolerance
+    if (!status) gainFactorMode = 0;
+    fitOptions->gainFactorMode = gainFactorMode;
+
     if (modelType == pmModelClassGetType("PS_MODEL_SERSIC")) {
 	fitOptions->mode = PM_SOURCE_FIT_NO_INDEX;
@@ -236,4 +240,18 @@
 	pmSourceModelGuessPCM (pcm, source, maskVal, markVal);
       }
+
+      // if we provide a test guess value we want to use that value!
+      for (int i = 0; i < nParams; i++) {
+	  if (i == PM_PAR_XPOS) continue;
+	  if (i == PM_PAR_YPOS) continue;
+
+	  char name[32];
+	  sprintf (name, "TEST_FIT_PAR%d", i);
+	  float value = psMetadataLookupF32 (&status, recipe, name);
+	  if (status && isfinite (value)) {
+	      params[i] = value;
+	  }
+      }
+
       pmPCMupdate(pcm, source, fitOptions, model);
       pmSourceFitPCM (pcm, source, fitOptions, maskVal, markVal, psfSize);
@@ -263,4 +281,12 @@
     }
 
+    if (modelType == pmModelClassGetType("PS_MODEL_TRAIL")) {
+	fprintf (stderr, "result: %f @ (%f, %f)\n", params[6]*180/M_PI, params[4], params[5]);
+    } else {
+	bool useReff = pmModelUseReff (modelType);
+	pmModelParamsToAxes (&axes, params[PM_PAR_SXX], params[PM_PAR_SXY], params[PM_PAR_SYY], useReff);
+	fprintf (stderr, "result: %f @ (%f, %f) : %f\n", axes.theta*180/M_PI, axes.major, axes.minor, params[PM_PAR_SXY]);
+    }
+
     // write out
     psphotSaveImage (NULL, source->pixels, "resid.fits");
Index: /branches/eam_branches/ipp-20130509/psphot/test/tap_psphot_galaxies.pro
===================================================================
--- /branches/eam_branches/ipp-20130509/psphot/test/tap_psphot_galaxies.pro	(revision 35658)
+++ /branches/eam_branches/ipp-20130509/psphot/test/tap_psphot_galaxies.pro	(revision 35659)
@@ -185,5 +185,5 @@
   subset RminIn = RminIn_all if (Type == 1)
 
-  data test.exp.cmf 
+  data test.exp2.cmf 
   read -fits Chip.xfit X_EXT Y_EXT EXT_INST_MAG EXT_WIDTH_MAJ EXT_WIDTH_MIN EXT_THETA
   set EXT_THETA_ALT = EXT_THETA * (EXT_THETA >= 0.0) + (EXT_THETA + 3.14159265) * (EXT_THETA < 0.0)
