Index: /trunk/psLib/src/fits/psFitsImage.c
===================================================================
--- /trunk/psLib/src/fits/psFitsImage.c	(revision 7160)
+++ /trunk/psLib/src/fits/psFitsImage.c	(revision 7161)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-04-21 20:41:10 $
+ *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-05-22 22:38:27 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -358,17 +358,26 @@
 
     // write the header, if any.
-    if (extname != NULL) {
+    if (extname && strlen(extname) > 0) {
         psFitsSetExtName(fits,extname);
     }
 
-    if (header != NULL) {
-        if (extname != NULL) {
-            psMetadataAddStr(header,PS_LIST_TAIL,"EXTNAME",
-                             PS_META_REPLACE,
-                             "Extenion Name",
-                             extname);
-        }
-
+    if (header) {
+        // Update header with BITPIX, NAXIS[12], BSCALE, BZERO so we don't clobber the basic header
+        psMetadataAddS32(header, PS_LIST_TAIL, "BITPIX", PS_META_REPLACE, "Bits per pixel", bitPix);
+        psMetadataAddS32(header, PS_LIST_TAIL, "NAXIS",  PS_META_REPLACE, "Number of dimensions", naxis);
+        psMetadataAddS32(header, PS_LIST_TAIL, "NAXIS1", PS_META_REPLACE, "Number of columns", numCols);
+        psMetadataAddS32(header, PS_LIST_TAIL, "NAXIS2", PS_META_REPLACE, "Number of rows", numRows);
+        psMetadataAddF64(header, PS_LIST_TAIL, "BSCALE", PS_META_REPLACE, "Pixel value scale", 1.0);
+        psMetadataAddF64(header, PS_LIST_TAIL, "BZERO",  PS_META_REPLACE, "Pixel value offset", bZero);
+        if (extname && strlen(extname) > 0) {
+            psMetadataAddStr(header, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "Extenion Name", extname);
+        }
         psFitsWriteHeader(header, fits);
+    } else {
+        // Write the necessary headers manually
+        fits_write_key_dbl(fits->fd, "BZERO", bZero, 12, "Pixel Value Offset", &status);
+        fits_write_key_dbl(fits->fd, "BSCALE", 1.0, 12, "Pixel Value Scale", &status);
+        // Regrettably have to cast away "const" on extname, because CFITSIO is horrible
+        fits_write_key_str(fits->fd, "EXTNAME", (char *)extname, "Extension name", &status);
     }
 
