Index: /trunk/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- /trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 25979)
+++ /trunk/psModules/src/objects/pmSourcePhotometry.c	(revision 25980)
@@ -545,6 +545,5 @@
 
 // determine chisq, etc for linear normalization-only fit
-bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *variance,
-                    psImageMaskType maskVal)
+bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *variance, psImageMaskType maskVal, const float covarFactor)
 {
     PS_ASSERT_PTR_NON_NULL(model, false);
@@ -561,5 +560,5 @@
             if (variance->data.F32[j][i] <= 0)
                 continue;
-            dC += PS_SQR (image->data.F32[j][i]) / variance->data.F32[j][i];
+            dC += PS_SQR (image->data.F32[j][i]) / (covarFactor * variance->data.F32[j][i]);
             Npix ++;
         }
@@ -573,7 +572,5 @@
 
 
-double pmSourceModelWeight(const pmSource *Mi,
-                      int term,
-                      const bool unweighted_sum) // should the cross product be weighted?
+double pmSourceModelWeight(const pmSource *Mi, int term, const bool unweighted_sum, const float covarFactor)
 {
     PS_ASSERT_PTR_NON_NULL(Mi, NAN);
@@ -594,5 +591,5 @@
                 continue;
             if (!unweighted_sum) {
-                wt = Wi->data.F32[yi][xi];
+                wt = covarFactor * Wi->data.F32[yi][xi];
                 if (wt == 0)
                     continue;
@@ -623,7 +620,5 @@
 }
 
-double pmSourceModelDotModel (const pmSource *Mi,
-                              const pmSource *Mj,
-                              const bool unweighted_sum) // should the cross product be weighted?
+double pmSourceModelDotModel (const pmSource *Mi, const pmSource *Mj, const bool unweighted_sum, const float covarFactor)
 {
     PS_ASSERT_PTR_NON_NULL(Mi, NAN);
@@ -677,5 +672,5 @@
                 flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]);
             } else {
-                wt = Wi->data.F32[yi][xi];
+                wt = covarFactor * Wi->data.F32[yi][xi];
                 if (wt > 0) {
                     flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]) / wt;
@@ -687,7 +682,5 @@
 }
 
-double pmSourceDataDotModel (const pmSource *Mi,
-                             const pmSource *Mj,
-                             const bool unweighted_sum) // should the cross product be weighted?
+double pmSourceDataDotModel (const pmSource *Mi, const pmSource *Mj, const bool unweighted_sum, const float covarFactor)
 {
     PS_ASSERT_PTR_NON_NULL(Mi, NAN);
@@ -741,5 +734,5 @@
                 flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]);
             } else {
-                wt = Wi->data.F32[yi][xi];
+                wt = covarFactor * Wi->data.F32[yi][xi];
                 if (wt > 0) {
                     flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]) / wt;
Index: /trunk/psModules/src/objects/pmSourcePhotometry.h
===================================================================
--- /trunk/psModules/src/objects/pmSourcePhotometry.h	(revision 25979)
+++ /trunk/psModules/src/objects/pmSourcePhotometry.h	(revision 25980)
@@ -52,10 +52,10 @@
 bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psImageMaskType maskVal);
 bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *mask, psImageMaskType maskVal);
-bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, psImageMaskType maskVal);
+bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, psImageMaskType maskVal, const float covarFactor);
 
 
-double pmSourceDataDotModel (const pmSource *Mi, const pmSource *Mj, const bool unweighted_sum);
-double pmSourceModelDotModel (const pmSource *Mi, const pmSource *Mj, const bool unweighted_sum);
-double pmSourceModelWeight(const pmSource *Mi, int term, const bool unweighted_sum);
+double pmSourceDataDotModel (const pmSource *Mi, const pmSource *Mj, const bool unweighted_sum, const float covarFactor);
+double pmSourceModelDotModel (const pmSource *Mi, const pmSource *Mj, const bool unweighted_sum, const float covarFactor);
+double pmSourceModelWeight(const pmSource *Mi, int term, const bool unweighted_sum, const float covarFactor);
 
 // retire these:
