Index: /trunk/psphot/src/psphotChoosePSF.c
===================================================================
--- /trunk/psphot/src/psphotChoosePSF.c	(revision 13803)
+++ /trunk/psphot/src/psphotChoosePSF.c	(revision 13804)
@@ -5,8 +5,4 @@
 
     bool            status;
-    char           *modelName;
-    pmPSF          *psf = NULL;
-    pmPSFtry       *try = NULL;
-    psArray        *stars = NULL;
 
     psTimerStart ("psphot");
@@ -51,5 +47,5 @@
     }
 
-    stars = psArrayAllocEmpty (sources->n);
+    psArray *stars = psArrayAllocEmpty (sources->n);
 
     // select the candidate PSF stars (pointers to original sources)
@@ -92,5 +88,5 @@
     for (int i = 0; i < models->n; i++) {
         psMetadataItem *item = psListGetAndIncrement (iter);
-        modelName = item->data.V;
+        char *modelName = item->data.V;
         models->data[i] = pmPSFtryModel (stars, modelName, RADIUS, POISSON_ERRORS, psfTrendMask, PSF_PARAM_WEIGHTS);
     }
@@ -106,5 +102,5 @@
     float bestM = 0.0;
     for (int i = 0; i < models->n; i++) {
-        try = models->data[i];
+        pmPSFtry *try = models->data[i];
         if (try == NULL) {
             psError(PSPHOT_ERR_PSF, false, "PSF model %d is NULL", i);
@@ -125,5 +121,18 @@
     }
 
-    try = models->data[bestN];
+    pmPSFtry *try = models->data[bestN];
+
+    // print/dump psf parameters
+    if (psTraceGetLevel("psphot") >= 5) {
+	for (int i = PM_PAR_SXX; i < try->psf->params_NEW->n; i++) {
+	    psPolynomial2D *poly = try->psf->params_NEW->data[i];
+	    for (int nx = 0; nx <= poly->nX; nx++) {
+		for (int ny = 0; ny <= poly->nY; ny++) {
+		    if (poly->mask[nx][ny]) continue;
+		    fprintf (stderr, "%g x^%d y^%d\n", poly->coeff[nx][ny], nx, ny);
+		}
+	    }
+	}
+    }
 
     // measure and save the median value of dparams[PM_PAR_SXX],dparams[PM_PAR_SYY]
@@ -275,5 +284,5 @@
     // XXX we are not saving the fitted sources
     // XXX do we want to keep them so we may optionally write them out?
-    psf = psMemIncrRefCounter(try->psf);
+    pmPSF *psf = psMemIncrRefCounter(try->psf);
     psFree (models);
 
@@ -284,5 +293,5 @@
     }
 
-    modelName = pmModelGetType (psf->type);
+    char *modelName = pmModelGetType (psf->type);
     psLogMsg ("psphot.pspsf", PS_LOG_INFO, "select psf model: %f sec\n", psTimerMark ("psphot"));
     psLogMsg ("psphot.pspsf", PS_LOG_INFO, "psf model %s, ApResid: %f +/- %f\n", modelName, psf->ApResid, psf->dApResid);
Index: /trunk/psphot/src/psphotEvalFLT.c
===================================================================
--- /trunk/psphot/src/psphotEvalFLT.c	(revision 13803)
+++ /trunk/psphot/src/psphotEvalFLT.c	(revision 13804)
@@ -11,17 +11,15 @@
     }
 
-    // did the model fit fail for one or another reason?
-    switch (model->status) {
-      case PM_MODEL_SUCCESS:
-	break;
-      case PM_MODEL_UNTRIED:
+    // was the model actually fitted?
+    if (!(model->flags & PM_MODEL_STATUS_FITTED)) {
 	source->mode &= ~PM_SOURCE_MODE_FITTED; 
 	return false;
-      case PM_MODEL_BADARGS:
-      case PM_MODEL_NONCONVERGE:
-      case PM_MODEL_OFFIMAGE:
-      default:
+    }
+    // did the model fit fail for one or another reason?
+    if (model->flags & (PM_MODEL_STATUS_BADARGS | 
+			PM_MODEL_STATUS_NONCONVERGE | 
+			PM_MODEL_STATUS_OFFIMAGE)) {
+	source->mode |= PM_SOURCE_MODE_FAIL;
 	psLogMsg ("psphot", 5, "EXT fail fit\n");
-	source->mode |= PM_SOURCE_MODE_FAIL;
 	return false;
     }
Index: /trunk/psphot/src/psphotEvalPSF.c
===================================================================
--- /trunk/psphot/src/psphotEvalPSF.c	(revision 13803)
+++ /trunk/psphot/src/psphotEvalPSF.c	(revision 13804)
@@ -67,9 +67,6 @@
     }
 
-    // did the model fit fail for one or another reason?
-    switch (model->status) {
-      case PM_MODEL_SUCCESS:
-	break;
-      case PM_MODEL_UNTRIED:
+    // was the model actually fitted?
+    if (!(model->flags & PM_MODEL_STATUS_FITTED)) {
 	source->mode &= ~PM_SOURCE_MODE_FITTED; 
 	if (source->mode & PM_SOURCE_MODE_SATSTAR) {
@@ -77,8 +74,9 @@
 	}
 	return false;
-      case PM_MODEL_BADARGS:
-      case PM_MODEL_NONCONVERGE:
-      case PM_MODEL_OFFIMAGE:
-      default:
+    }
+    // did the model fit fail for one or another reason?
+    if (model->flags & (PM_MODEL_STATUS_BADARGS | 
+			PM_MODEL_STATUS_NONCONVERGE | 
+			PM_MODEL_STATUS_OFFIMAGE)) {
 	source->mode |= PM_SOURCE_MODE_FAIL;
 	if (source->mode & PM_SOURCE_MODE_SATSTAR) {
@@ -193,15 +191,13 @@
     }
 
+    // was the model actually fitted?
+    if (!(model->flags & PM_MODEL_STATUS_FITTED)) {
+	source->mode &= ~PM_SOURCE_MODE_FITTED; 
+	return false;
+    }
     // did the model fit fail for one or another reason?
-    switch (model->status) {
-      case PM_MODEL_SUCCESS:
-	break;
-      case PM_MODEL_UNTRIED:
-	source->mode &= ~PM_SOURCE_MODE_FITTED; 
-	return false;
-      case PM_MODEL_BADARGS:
-      case PM_MODEL_NONCONVERGE:
-      case PM_MODEL_OFFIMAGE:
-      default:
+    if (model->flags & (PM_MODEL_STATUS_BADARGS | 
+			PM_MODEL_STATUS_NONCONVERGE | 
+			PM_MODEL_STATUS_OFFIMAGE)) {
 	source->mode |= PM_SOURCE_MODE_FAIL;
 	return false;
Index: /trunk/psphot/src/psphotReadout.c
===================================================================
--- /trunk/psphot/src/psphotReadout.c	(revision 13803)
+++ /trunk/psphot/src/psphotReadout.c	(revision 13804)
@@ -132,4 +132,7 @@
         }
     }
+
+    // XXX Test dump of PSF parameters across image field.
+
     if (!strcasecmp (breakPt, "PSFMODEL")) {
         return psphotReadoutCleanup (config, readout, recipe, psf, sources);
