Index: trunk/psModules/src/concepts/pmConceptsCopy.c
===================================================================
--- trunk/psModules/src/concepts/pmConceptsCopy.c	(revision 22699)
+++ trunk/psModules/src/concepts/pmConceptsCopy.c	(revision 22701)
@@ -26,4 +26,5 @@
                          psMetadata *source, // Source metadata container
                          psMetadata *specs, // Concept specifications
+                         psMetadata *cameraFormat, // Camera format configuration
                          const pmFPA *fpa,    // FPA of interest
                          const pmChip *chip,  // Chip of interest, or NULL
@@ -36,11 +37,4 @@
     assert(specs);
     assert(dontCopyConcepts);
-
-    pmHDU *hdu = pmHDUGetLowest(fpa, chip, cell); // The HDU at the lowest level
-    if (!hdu) {
-        psError(PS_ERR_UNKNOWN, true, "Can't find HDU for cell");
-        return false;
-    }
-    psMetadata *cameraFormat = hdu->format; // The camera format
 
     psMetadataIterator *iter = psMetadataIteratorAlloc(source, PS_LIST_HEAD, NULL);
@@ -86,7 +80,12 @@
 
     psMetadata *specs = pmConceptsSpecs(PM_FPA_LEVEL_FPA); // Concept specifications
+    if (!target->hdu) {
+        psError(PS_ERR_UNKNOWN, true, "Can't find HDU for FPA");
+        return false;
+    }
 
     // Copy FPA concepts
-    if (!copyConcepts(target->concepts, source->concepts, specs, source, NULL, NULL, dontCopyConceptsFPA)) {
+    if (!copyConcepts(target->concepts, source->concepts, specs, target->hdu->format,
+                      source, NULL, NULL, dontCopyConceptsFPA)) {
         return false;
     }
@@ -123,8 +122,13 @@
 
     psMetadata *specs = pmConceptsSpecs(PM_FPA_LEVEL_CHIP); // Concept specifications
+    pmHDU *hdu = pmHDUFromChip(target); // Header data unit
+    if (!hdu) {
+        psError(PS_ERR_UNKNOWN, true, "Can't find HDU for chip");
+        return false;
+    }
 
     // Copy chip concepts
-    if (!copyConcepts(target->concepts, source->concepts, specs, source->parent, source, NULL,
-                      dontCopyConceptsChip)) {
+    if (!copyConcepts(target->concepts, source->concepts, specs, hdu->format,
+                      source->parent, source, NULL, dontCopyConceptsChip)) {
         return false;
     }
@@ -162,6 +166,11 @@
 
     psMetadata *specs = pmConceptsSpecs(PM_FPA_LEVEL_CHIP); // Concept specifications
+    pmHDU *hdu = pmHDUFromCell(target); // Header data unit
+    if (!hdu) {
+        psError(PS_ERR_UNKNOWN, true, "Can't find HDU for cell");
+        return false;
+    }
 
-    return copyConcepts(target->concepts, source->concepts, specs, source->parent->parent,
-                        source->parent, source, dontCopyConceptsCell);
+    return copyConcepts(target->concepts, source->concepts, specs, hdu->format,
+                        source->parent->parent, source->parent, source, dontCopyConceptsCell);
 }
