Index: trunk/psLib/src/imageops/psImageBackground.c
===================================================================
--- trunk/psLib/src/imageops/psImageBackground.c	(revision 8974)
+++ trunk/psLib/src/imageops/psImageBackground.c	(revision 8978)
@@ -49,5 +49,5 @@
         int iy = pixel / nx;
 
-        if (mask && mask->data.U8[iy][ix] & maskValue) {
+        if (!isfinite(image->data.F32[iy][ix]) || (mask && mask->data.U8[iy][ix] & maskValue)) {
             continue;
         }
@@ -72,9 +72,12 @@
     }
 
+    // Subtract the median when we add the numbers, so we don't get numerical problems
+    float median = npts % 2 ? 0.5 * (values->data.F32[npts/2 - 1] + values->data.F32[npts/2]) :
+                   values->data.F32[npts/2];
     double value = 0;
     for (long i = imin; (i <= imax) && (i < n); i++) {
-        value += values->data.F32[i];
+        value += values->data.F32[i] - median;
     }
-    value = value / npts;
+    value = value / npts + median;
 
     stats->robustMedian = value;
