Index: /trunk/psModules/src/concepts/pmConcepts.c
===================================================================
--- /trunk/psModules/src/concepts/pmConcepts.c	(revision 12679)
+++ /trunk/psModules/src/concepts/pmConcepts.c	(revision 12680)
@@ -204,9 +204,11 @@
     }
 
-    pmHDU *hdu = pmHDUGetLowest(fpa, chip, cell); // Any HDU, required for the format
-    if (!hdu) {
+    // At least one HDU is required for the reading functions
+    pmHDU *hduLow = pmHDUGetLowest(fpa, chip, cell); // Lowest HDU.
+    if (!hduLow) {
         // Can't do anything --- don't record any success, but don't return an error either
         return true;
     }
+    pmHDU *hduHigh = pmHDUGetHighest(fpa, chip, cell); // Highest HDU
 
     bool success = true;                // Success in reading concepts?
@@ -229,5 +231,5 @@
     }
 
-    if (source & PM_CONCEPT_SOURCE_PHU && !(*read & PM_CONCEPT_SOURCE_PHU)) {
+    if (source & PM_CONCEPT_SOURCE_PHU && !(*read & PM_CONCEPT_SOURCE_PHU) && hduHigh->header) {
         if (p_pmConceptsReadFromHeader(target, *specs, fpa, chip, cell)) {
             *read |= PM_CONCEPT_SOURCE_PHU;
@@ -238,5 +240,7 @@
     }
 
-    if (source & PM_CONCEPT_SOURCE_HEADER && !(*read & PM_CONCEPT_SOURCE_HEADER)) {
+    // If there are multiple HDUs, then it may be that one of them hasn't been read yet (hdu->header not set)
+    if (source & PM_CONCEPT_SOURCE_HEADER && !(*read & PM_CONCEPT_SOURCE_HEADER) &&
+        hduLow != hduHigh && hduLow->header) {
         if (p_pmConceptsReadFromHeader(target, *specs, fpa, chip, cell)) {
             *read |= PM_CONCEPT_SOURCE_HEADER;
