Index: trunk/psLib/src/fits/psFitsImage.c
===================================================================
--- trunk/psLib/src/fits/psFitsImage.c	(revision 27303)
+++ trunk/psLib/src/fits/psFitsImage.c	(revision 27313)
@@ -498,6 +498,11 @@
     psImage *inImage;                   // Image to read in
     if (floatType == PS_FITS_FLOAT_NONE) {
-        inImage = psImageRecycle(outImage, numCols, numRows, info->psDatatype);
-        outImage = psMemIncrRefCounter(inImage);
+        if (!outImage || outImage->type.type == info->psDatatype) {
+            outImage = psImageRecycle(outImage, numCols, numRows, info->psDatatype);
+            inImage = psMemIncrRefCounter(outImage);
+        } else {
+            outImage = psImageRecycle(outImage, numCols, numRows, outImage->type.type);
+            inImage = psImageAlloc(numCols, numRows, info->psDatatype);
+        }
     } else {
         inImage = psImageAlloc(numCols, numRows, info->psDatatype);
@@ -511,9 +516,11 @@
         return NULL;
     }
-    psFree(info);
 
     if (floatType != PS_FITS_FLOAT_NONE) {
         outImage = psFitsFloatImageFromDisk(outImage, inImage, floatType);
-    }
+    } else if (outImage->type.type != info->psDatatype) {
+        outImage = psImageCopy(outImage, inImage, outImage->type.type);
+    }
+    psFree(info);
     psFree(inImage);
 
