Index: trunk/psModules/src/objects/pmSourceFitPCM.c
===================================================================
--- trunk/psModules/src/objects/pmSourceFitPCM.c	(revision 30621)
+++ trunk/psModules/src/objects/pmSourceFitPCM.c	(revision 31153)
@@ -38,4 +38,5 @@
 #include "pmSourceDiffStats.h"
 #include "pmSource.h"
+#include "pmSourcePhotometry.h"
 #include "pmSourceFitModel.h"
 #include "pmPCMdata.h"
@@ -70,4 +71,8 @@
         psTrace ("psModules.objects", 4, "%f +/- %f", params->data.F32[i], dparams->data.F32[i]);
     }
+    if (fitOptions->saveCovariance) {
+	psFree(pcm->modelConv->covar);
+	pcm->modelConv->covar = psMemIncrRefCounter(covar);
+    }
     psTrace ("psphot", 4, "niter: %d, chisq: %f", myMin->iter, myMin->value);
 
@@ -79,11 +84,19 @@
 	}
     }
+    pcm->modelConv->nIter = myMin->iter;
+    pcm->modelConv->nPar = pcm->nPar;
 
     // save the resulting chisq, nDOF, nIter
-    pcm->modelConv->chisq = myMin->value;
-    pcm->modelConv->nIter = myMin->iter;
-    pcm->modelConv->nPix = pcm->nPix;
-    pcm->modelConv->nDOF = pcm->nDOF;
-    pcm->modelConv->chisqNorm = pcm->modelConv->chisq / pcm->modelConv->nDOF;
+    if (fitOptions->poissonErrors) {
+	pcm->modelConv->chisq = myMin->value;
+	pcm->modelConv->nPix = pcm->nPix;
+	pcm->modelConv->nDOF = pcm->nDOF;
+	pcm->modelConv->chisqNorm = pcm->modelConv->chisq / pcm->modelConv->nDOF;
+    } else {
+	// xxx this is wrong because it does not convolve with the psf
+	pmSourceChisqUnsubtracted (source, pcm->modelConv, maskVal);
+    }
+
+    // set the model success or failure status
     pcm->modelConv->flags |= PM_MODEL_STATUS_FITTED;
     if (!fitStatus) pcm->modelConv->flags |= PM_MODEL_STATUS_NONCONVERGE;
