Index: trunk/psLib/src/fits/psFitsImage.c
===================================================================
--- trunk/psLib/src/fits/psFitsImage.c	(revision 18156)
+++ trunk/psLib/src/fits/psFitsImage.c	(revision 18208)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.30 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-06-17 02:46:05 $
+ *  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-06-20 02:50:01 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -534,6 +534,8 @@
     }
 
+    bool useRequestedScale = true;
     if (!isfinite(bscale) || !isfinite(bzero)) {
         // Couldn't scale, so don't compress.  Save compression parameters for later
+	useRequestedScale = false;
         compress = psFitsCompressionGet(fits);
         if (!psFitsSetCompression(fits, PS_FITS_COMPRESS_NONE, NULL, 0, 0, 0)) {
@@ -556,6 +558,7 @@
         bzero = cfitsioBzero;
     }
+
     psFitsOptions *options = fits->options; // FITS I/O options
-    psAssert(!options || bitPix == options->bitpix || options->bitpix == 0, "impossible");
+    psAssert(!useRequestedScale || !options || bitPix == options->bitpix || options->bitpix == 0, "impossible");
 
     int naxis = 3;                      // Number of axes
@@ -603,5 +606,5 @@
     fits_set_bscale(fits->fd, 1.0, cfitsioBzero, &status);
 
-    if (bscale != 0.0) {
+    if (isfinite(bzero) && isfinite(bscale) && (bscale != 0.0)) {
         fits_write_key_dbl(fits->fd, "BZERO", bzero, 12,
                            "Scaling: TRUE = BZERO + BSCALE * DISK", &status);
@@ -693,6 +696,8 @@
     }
 
+    bool useRequestedScale = true;
     if (!isfinite(bscale) || !isfinite(bzero)) {
         // Couldn't scale, so don't compress.  Save compression parameters for later
+	useRequestedScale = false;
         compress = psFitsCompressionGet(fits);
         if (!psFitsSetCompression(fits, PS_FITS_COMPRESS_NONE, NULL, 0, 0, 0)) {
@@ -716,5 +721,5 @@
     }
     psFitsOptions *options = fits->options; // FITS I/O options
-    psAssert(!options || bitPix == options->bitpix || options->bitpix == 0, "impossible");
+    psAssert(!useRequestedScale || !options || bitPix == options->bitpix || options->bitpix == 0, "impossible");
 
     // Check to see if the HDU has the same datatype
