Index: trunk/psLib/src/fits/psFitsScale.c
===================================================================
--- trunk/psLib/src/fits/psFitsScale.c	(revision 36760)
+++ trunk/psLib/src/fits/psFitsScale.c	(revision 37050)
@@ -929,6 +929,5 @@
 
 
-psImage *psFitsScaleForDisk(const psImage *image, const psFits *fits, double bscale, double bzero, double boffset, double bsoften,
-                            psRandom *rng)
+psImage *psFitsScaleForDisk(const psImage *image, const psFits *fits, double bscale, double bzero, double boffset, double bsoften, psRandom *rng)
 {
     PS_ASSERT_IMAGE_NON_NULL(image, NULL);
@@ -971,81 +970,84 @@
     psImage *out = psImageAlloc(numCols, numRows, outType); // Output image
 
-    if (!psMemIncrRefCounter(rng) && options->fuzz) {
-        // Don't blab about which seed we're going to get --- it's not necessary for this purpose
-        rng = psRandomAlloc(PS_RANDOM_TAUS);
-    }
-
-#define SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, OUTTYPE) \
-    case PS_TYPE_##OUTTYPE: { \
-        double scale = 1.0 / bscale; \
-        double zero = bzero; \
+    // fprintf (stderr, "corruption check psFitsScaleForDisk 1\n");
+    // psMemCheckCorruption (stderr, true);
+
+    if (options->fuzz && !psMemIncrRefCounter (rng)) {
+      // Don't blab about which seed we're going to get --- it's not necessary for this purpose
+      rng = psRandomAlloc(PS_RANDOM_TAUS);
+    }
+
+#define SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, OUTTYPE)			\
+    case PS_TYPE_##OUTTYPE: {						\
+        double scale = 1.0 / bscale;					\
+        double zero = bzero;						\
         /* Note: BITPIX=8 treated differently, since it uses unsigned values; the rest use signed */ \
-        double min = bitpix == 8 ? 0 : -pow(2.0, options->bitpix - 1); \
+        double min = bitpix == 8 ? 0 : -pow(2.0, options->bitpix - 1);	\
         double max = bitpix == 8 ? 255 : (pow(2.0, options->bitpix - 1) - 1.0); \
-        for (int y = 0; y < numRows; y++) { \
-            for (int x = 0; x < numCols; x++) { \
-	      ps##INTYPE value; \
-	      if ((options->scaling == PS_FITS_SCALE_LOG_RANGE)||	\
-		(options->scaling == PS_FITS_SCALE_LOG_MANUAL)||        \
-		  (options->scaling == PS_FITS_SCALE_LOG_STDEV_POSITIVE)|| \
-		  (options->scaling == PS_FITS_SCALE_LOG_STDEV_NEGATIVE)|| \
-		  (options->scaling == PS_FITS_SCALE_LOG_STDEV_BOTH)) {	\
-		if (isfinite((IN)->data.INTYPE[y][x])) {		\
-		  value = log10( (IN)->data.INTYPE[y][x] - boffset );	\
+        for (int y = 0; y < numRows; y++) {				\
+            for (int x = 0; x < numCols; x++) {				\
+		ps##INTYPE value;					\
+		if ((options->scaling == PS_FITS_SCALE_LOG_RANGE)||	\
+		    (options->scaling == PS_FITS_SCALE_LOG_MANUAL)||	\
+		    (options->scaling == PS_FITS_SCALE_LOG_STDEV_POSITIVE)|| \
+		    (options->scaling == PS_FITS_SCALE_LOG_STDEV_NEGATIVE)|| \
+		    (options->scaling == PS_FITS_SCALE_LOG_STDEV_BOTH)) { \
+		    if (isfinite((IN)->data.INTYPE[y][x])) {		\
+			value = log10( (IN)->data.INTYPE[y][x] - boffset ); \
+		    }							\
+		    else {						\
+			value = (IN)->data.INTYPE[y][x];		\
+		    }							\
+		}							\
+		else if ((options->scaling == PS_FITS_SCALE_ASINH_RANGE)|| \
+			 (options->scaling == PS_FITS_SCALE_ASINH_MANUAL)|| \
+			 (options->scaling == PS_FITS_SCALE_ASINH_STDEV_POSITIVE)|| \
+			 (options->scaling == PS_FITS_SCALE_ASINH_STDEV_NEGATIVE)|| \
+			 (options->scaling == PS_FITS_SCALE_ASINH_STDEV_BOTH)) { \
+		    if (isfinite((IN)->data.INTYPE[y][x])) {		\
+			value = 1.0857362 * (asinh( ((IN)->data.INTYPE[y][x] - boffset) / (2.0 * bsoften))); \
+		    }							\
+		    else {						\
+			value = (IN)->data.INTYPE[y][x];		\
+		    }							\
 		}							\
 		else {							\
-		  value = (IN)->data.INTYPE[y][x];			\
+		    value = (IN)->data.INTYPE[y][x];			\
 		}							\
-	      }								\
-	      else if ((options->scaling == PS_FITS_SCALE_ASINH_RANGE)||	\
-		(options->scaling == PS_FITS_SCALE_ASINH_MANUAL)||        \
-		  (options->scaling == PS_FITS_SCALE_ASINH_STDEV_POSITIVE)|| \
-		  (options->scaling == PS_FITS_SCALE_ASINH_STDEV_NEGATIVE)|| \
-		  (options->scaling == PS_FITS_SCALE_ASINH_STDEV_BOTH)) {	\
-		if (isfinite((IN)->data.INTYPE[y][x])) {		\
-		  value = 1.0857362 * (asinh( ((IN)->data.INTYPE[y][x] - boffset) / (2.0 * bsoften))); \
+		if (!isfinite(value)) {					\
+		    /* This choice of "max" for non-finite pixels is mainly cosmetic --- it has to be */ \
+		    /* something, and "min" would produce holes in the cores of bright stars. */ \
+		    (OUT)->data.OUTTYPE[y][x] = max;			\
+		} else {						\
+		    value = (value - zero) * scale;			\
+		    if (options->fuzz && (value - (int)value != 0.0)) {	\
+			/* Add random factor [0.0,1.0): adds a variance of 1/12, */ \
+			/* but preserves the expectation value given the floor() */ \
+			value += psRandomUniform(rng) ;			\
+		    }							\
+		    /* Check for underflow and overflow; set either to max */ \
+		    (OUT)->data.OUTTYPE[y][x] = (value < min || value > max ? max : floor(value)); \
 		}							\
-		else {							\
-		  value = (IN)->data.INTYPE[y][x];			\
-		}							\
-	      }								\
-		else { \
-		  value = (IN)->data.INTYPE[y][x];	\
-		}					    \
-                if (!isfinite(value)) { \
-                    /* This choice of "max" for non-finite pixels is mainly cosmetic --- it has to be */ \
-                    /* something, and "min" would produce holes in the cores of bright stars. */ \
-                    (OUT)->data.OUTTYPE[y][x] = max; \
-                } else { \
-                    value = (value - zero) * scale; \
-                    if (options->fuzz && (value - (int)value != 0.0)) { \
-                       /* Add random factor [-0.5,0.5): adds a variance of 1/12, */ \
-                       /* but preserves the expectation value */ \
-                        value += psRandomUniform(rng) ; \
-                    } \
-                    /* Check for underflow and overflow; set either to max */ \
-                    (OUT)->data.OUTTYPE[y][x] = (value < min || value > max ? max : floor(value)); \
-                } \
-            } \
-        } \
-        break; \
-    }
-
-#define SCALE_WRITE_IN_CASE(IN, INTYPE, OUT) \
-    case PS_TYPE_##INTYPE: { \
-        switch (outType) { \
-	  SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, U8);;	\
-	  SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, S16);;	\
-	  SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, S32);;	\
-	  SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, S64);;	\
-          default: \
-            psAbort("Should be unreachable."); \
-        } \
-        break; \
-    }
-
+            }								\
+        }								\
+        break;								\
+    }
+    
+#define SCALE_WRITE_IN_CASE(IN, INTYPE, OUT)			\
+    case PS_TYPE_##INTYPE: {					\
+	switch (outType) {					\
+	    SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, U8);;		\
+	    SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, S16);;	\
+	    SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, S32);;	\
+	    SCALE_WRITE_OUT_CASE(IN, INTYPE, OUT, S64);;	\
+	  default:						\
+	    psAbort("Should be unreachable.");			\
+	}							\
+	break;							\
+    }
+    
     switch (image->type.type) {
-        SCALE_WRITE_IN_CASE(image, F32, out);
-        SCALE_WRITE_IN_CASE(image, F64, out); 
+	SCALE_WRITE_IN_CASE(image, F32, out);
+	SCALE_WRITE_IN_CASE(image, F64, out); 
       default:
         psAbort("Should be unreachable.");
@@ -1053,5 +1055,4 @@
 
     psFree(rng);
-
     return out;
 }
