Index: /trunk/psModules/src/camera/pmFPAMosaic.c
===================================================================
--- /trunk/psModules/src/camera/pmFPAMosaic.c	(revision 12700)
+++ /trunk/psModules/src/camera/pmFPAMosaic.c	(revision 12701)
@@ -1096,13 +1096,22 @@
     pmHDU *targetHDU = pmHDUFromChip(target); // The HDU for the target
     targetHDU->header = psMetadataCopy(targetHDU->header, sourceHDU->header);
-    pmHDU *phu = pmHDUGetHighest(target->parent, target, NULL);
-    if (!phu) {
+    pmHDU *targetPHU = pmHDUGetHighest(target->parent, target, NULL);
+    pmHDU *sourcePHU = pmHDUGetHighest(source->parent, source, NULL);
+
+    if (!targetPHU) {
         psError(PS_ERR_UNKNOWN, true, "Unable to find HDU after mosaicking.\n");
         return false;
     }
-    if (!phu->header) {
-        phu->header = psMetadataAlloc();
-    }
-    if (!pmConfigConformHeader(phu->header, phu->format)) {
+    if (!targetPHU->header) {
+	// if we don't yet have a header, copy this one.
+	// XXX do we need to create an empty one if the levels do not match??
+	if (true) {
+	    targetPHU->header = psMetadataCopy(targetPHU->header, sourcePHU->header);
+	} else {
+	    targetPHU->header = psMetadataAlloc();
+	}
+    }
+
+    if (!pmConfigConformHeader(targetPHU->header, targetPHU->format)) {
         psError(PS_ERR_UNKNOWN, false, "Unable to conform header after mosaicking.\n");
         return false;
