Index: trunk/psModules/src/camera/pmFPAWrite.c
===================================================================
--- trunk/psModules/src/camera/pmFPAWrite.c	(revision 7097)
+++ trunk/psModules/src/camera/pmFPAWrite.c	(revision 7168)
@@ -6,6 +6,8 @@
 #include "pmHDU.h"
 #include "pmHDUUtils.h"
+#include "pmHDUGenerate.h"
 #include "pmConcepts.h"
 
+#include "pmFPAWrite.h"
 
 bool pmReadoutWriteNext(pmReadout *readout, // Readout to write
@@ -51,5 +53,5 @@
         return false;
     }
-    psImage *image = hdu->images->data[z]; // The image from the HDU to write
+    psImage *image = readout->image; // The image from the HDU to write
     if (readout->row0 == 0 && readout->col0 == 0 && z == 0) {
         // Then we can assume that nothing has been written to the FITS file for now
@@ -68,5 +70,6 @@
 
     // We can simply update an existing HDU
-    if (!psFitsMoveExtName(fits, hdu->extname)) {
+    if (((hdu->phu || strcasecmp(hdu->extname, "PHU") == 0) && !psFitsMoveExtNum(fits, 0, false)) ||
+            !psFitsMoveExtName(fits, hdu->extname)) {
         psError(PS_ERR_IO, false, "Unable to move to extension %s\n", hdu->extname);
         return false;
@@ -86,4 +89,8 @@
     pmHDU *hdu = cell->hdu;             // The HDU
     if (hdu && ((!pixels && hdu->phu) || pixels)) {
+        if (pixels && !hdu->images && !pmHDUGenerateForCell(cell)) {
+            psError(PS_ERR_IO, false, "Unable to generate HDU for cell.\n");
+            return false;
+        }
         bool status = pmConceptsWriteCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
                                           PM_CONCEPT_SOURCE_DEFAULTS, false, NULL);
@@ -107,4 +114,8 @@
     pmHDU *hdu = chip->hdu;             // The HDU
     if (hdu && ((!pixels && hdu->phu) || pixels)) {
+        if (pixels && !hdu->images && !pmHDUGenerateForChip(chip)) {
+            psError(PS_ERR_IO, false, "Unable to generate HDU for chip.\n");
+            return false;
+        }
         bool status = pmConceptsWriteChip(chip, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
                                           PM_CONCEPT_SOURCE_DEFAULTS, false, NULL);
@@ -130,5 +141,4 @@
 
 
-
 bool pmFPAWrite(pmFPA *fpa,             // FPA to write
                 psFits *fits,           // FITS file to which to write
@@ -139,4 +149,8 @@
     pmHDU *hdu = fpa->hdu;              // The HDU
     if (hdu && ((!pixels && hdu->phu) || pixels)) {
+        if (pixels && !hdu->images && !pmHDUGenerateForFPA(fpa)) {
+            psError(PS_ERR_IO, false, "Unable to generate HDU for FPA.\n");
+            return false;
+        }
         bool status = pmConceptsWriteFPA(fpa, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
                                          PM_CONCEPT_SOURCE_DEFAULTS, NULL);
