Index: trunk/psphot/src/psphotMaskReadout.c
===================================================================
--- trunk/psphot/src/psphotMaskReadout.c	(revision 34293)
+++ trunk/psphot/src/psphotMaskReadout.c	(revision 42842)
@@ -58,4 +58,26 @@
             return false;
         }
+    }
+
+    // XXX test to repair variance
+    if (true) {
+      psImage *im = readout->image;
+      psImage *wt = readout->variance;
+      float maxVar = 0;
+      // find the max value
+      for (int j = 0; j < im->numRows; j++) {
+        for (int i = 0; i < im->numCols; i++) {
+	    if (!isfinite(wt->data.F32[j][i])) continue;
+	    maxVar = PS_MAX (wt->data.F32[j][i], maxVar);
+        }
+      }
+      // set pixels with nan variance and non-nan image to maxVar
+      for (int j = 0; j < im->numRows; j++) {
+        for (int i = 0; i < im->numCols; i++) {
+	    if (!isfinite(im->data.F32[j][i])) continue;
+	    if (isfinite(wt->data.F32[j][i])) continue;
+	    wt->data.F32[j][i] = maxVar;
+        }
+      }
     }
 
