Index: trunk/psModules/src/objects/pmSourceFitModel.c
===================================================================
--- trunk/psModules/src/objects/pmSourceFitModel.c	(revision 34403)
+++ trunk/psModules/src/objects/pmSourceFitModel.c	(revision 35560)
@@ -75,5 +75,7 @@
     PS_ASSERT_PTR_NON_NULL(source->pixels, false);
     PS_ASSERT_PTR_NON_NULL(source->maskObj, false);
-    PS_ASSERT_PTR_NON_NULL(source->variance, false);
+
+    // XXX if variance is NULL, use pixels instead (wrong, but not badly wrong)
+    // PS_ASSERT_PTR_NON_NULL(source->variance, false);
 
     psBool fitStatus = true;
@@ -93,4 +95,7 @@
     float Xo = model->params->data.F32[PM_PAR_XPOS];
     float Yo = model->params->data.F32[PM_PAR_YPOS];
+
+    // if variance is NULL, we pretend pixels == variance
+    float **vWgt = source->variance ? source->variance->data.F32 : source->pixels->data.F32;
 
     // fill in the coordinate and value entries
@@ -103,15 +108,16 @@
             }
             // skip zero-variance points
-            if (source->variance->data.F32[i][j] == 0) {
+            if (vWgt[i][j] == 0) {
                 continue;
             }
             // skip nan values in image
             if (!isfinite(source->pixels->data.F32[i][j])) {
+		fprintf (stderr, "WARNING: unmasked nan in image : %x vs %x\n", source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j], maskVal);
                 continue;
             }
 
             // skip nan values in image
-            if (!isfinite(source->variance->data.F32[i][j])) {
-		fprintf (stderr, "impossible! %x vs %x\n", source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j], maskVal);
+            if (!isfinite(vWgt[i][j])) {
+		fprintf (stderr, "WARNING: unmasked nan in variance : %x vs %x\n", source->maskObj->data.PS_TYPE_IMAGE_MASK_DATA[i][j], maskVal);
 		continue;
             }
@@ -140,5 +146,5 @@
             // source sky variance
             if (options->poissonErrors) {
-                yErr->data.F32[nPix] = 1.0 / source->variance->data.F32[i][j];
+                yErr->data.F32[nPix] = 1.0 / vWgt[i][j];
             } else {
                 yErr->data.F32[nPix] = 1.0 / options->weight;
