Index: trunk/stac/src/combine.c
===================================================================
--- trunk/stac/src/combine.c	(revision 3681)
+++ trunk/stac/src/combine.c	(revision 5743)
@@ -21,21 +21,22 @@
     combineConfig *config = combineParseConfig(argc, argv); // Configuration
 
-    psArray *images = stacReadImages(config->inNames); // The images
+    psArray *headers = NULL;            // Array of headers
+    psArray *images = stacReadImages(&headers, config->inNames); // The images
     // Make fake errors
     psArray *errors = psArrayAlloc(images->n);
     for (int i = 0; i < images->n; i++) {
-	psImage *image = images->data[i];
-	psImage *err = psImageAlloc(image->numCols, image->numRows, PS_TYPE_F32);
-	for (int y = 0; y < image->numRows; y++) {
-	    for (int x = 0; x < image->numCols; x++) {
-		err->data.F32[y][x] = 1.0;
-	    }
-	}
-	errors->data[i] = err;
+        psImage *image = images->data[i];
+        psImage *err = psImageAlloc(image->numCols, image->numRows, PS_TYPE_F32);
+        for (int y = 0; y < image->numRows; y++) {
+            for (int x = 0; x < image->numCols; x++) {
+                err->data.F32[y][x] = 1.0;
+            }
+        }
+        errors->data[i] = err;
     }
 
     // Calculate scales between images
-    psVector *scales = NULL;		// Relative scales between images
-    psVector *offsets = NULL;		// Offsets between images
+    psVector *scales = NULL;            // Relative scales between images
+    psVector *offsets = NULL;           // Offsets between images
     (void)stacScales(&scales, &offsets, images, config->starFile, config->starMap, 0.0, 0.0, config->aper);
 
@@ -44,6 +45,6 @@
     psVector *bad = psVectorAlloc(images->n, PS_TYPE_F32); // Bad limits
     for (int i = 0; i < images->n; i++) {
-	saturated->data.F32[i] = (config->saturated - offsets->data.F32[i]) / scales->data.F32[i];
-	bad->data.F32[i] = (config->bad - offsets->data.F32[i]) / scales->data.F32[i];
+        saturated->data.F32[i] = (config->saturated - offsets->data.F32[i]) / scales->data.F32[i];
+        bad->data.F32[i] = (config->bad - offsets->data.F32[i]) / scales->data.F32[i];
     }
 
@@ -52,16 +53,17 @@
 
     // Combine the images
-    psImage *combined = NULL;		// Combined image
-    psArray *rejected = NULL;		// Array of rejection masks
+    psImage *combined = NULL;           // Combined image
+    psArray *rejected = NULL;           // Array of rejection masks
     stacCombine(&combined, &rejected, images, errors, config->nReject, NULL, saturated, bad, config->reject);
 
-    psFits *outFile = psFitsAlloc(config->outName);
-    if (!psFitsWriteImage(outFile, NULL, combined, 0, NULL)) {
-	psErrorStackPrint(stderr, "Unable to write image: %s\n", config->outName);
+    psFits *outFile = psFitsOpen(config->outName, "r");
+    if (!psFitsWriteImage(outFile, headers->data[0], combined, 0)) {
+        psErrorStackPrint(stderr, "Unable to write image: %s\n", config->outName);
     }
     psTrace("combine", 1, "Combined image written to %s\n", config->outName);
-    psFree(outFile);
+    psFitsClose(outFile);
 
     // Clean up
+    psFree(headers);
     psFree(combined);
     psFree(rejected);
