Index: trunk/archive/scripts/src/phase2/pmFPAConceptsSet.c
===================================================================
--- trunk/archive/scripts/src/phase2/pmFPAConceptsSet.c	(revision 5633)
+++ trunk/archive/scripts/src/phase2/pmFPAConceptsSet.c	(revision 5786)
@@ -109,4 +109,5 @@
     const char *keyword = psMetadataLookupString(&mdok, translation, concept->name);
     if (mdok && strlen(keyword) > 0) {
+	psTrace(__func__, 6, "It's in keyword %s\n", keyword);
 	psMetadataItem *headerItem = NULL; // Item to add to header
 	// XXX: Need to expand range of types
@@ -131,31 +132,23 @@
 	// We have a FITS header to look up --- search each level
 	if (cell && cell->hdu) {
-	    psMetadataItem *cellItem = psMetadataLookup(cell->hdu->header, keyword);
-	    if (cellItem) {
-		// XXX: Need to clean up before returning
-		psMetadataAddItem(cell->hdu->header, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
-		status = true;
-	    }
+	    psTrace(__func__, 7, "Adding to the cell level header...\n");
+	    psMetadataAddItem(cell->hdu->header, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
+	    status = true;
 	} else if (chip && chip->hdu) {
-	    psMetadataItem *chipItem = psMetadataLookup(chip->hdu->header, keyword);
-	    if (chipItem) {
-		// XXX: Need to clean up before returning
-		psMetadataAddItem(chip->hdu->header, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
-		status = true;
-	    }
+	    psTrace(__func__, 7, "Adding to the chip level header...\n");
+	    psMetadataAddItem(chip->hdu->header, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
+	    status = true;
 	} else if (fpa->hdu) {
-	    psMetadataItem *fpaItem = psMetadataLookup(fpa->hdu->header, keyword);
-	    if (fpaItem) {
-		// XXX: Need to clean up before returning
-		psMetadataAddItem(fpa->hdu->header, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
-		status = true;
-	    }
-	} else if (fpa->phu) {
-	    psMetadataItem *fpaItem = psMetadataLookup(fpa->phu, keyword);
-	    if (fpaItem) {
-		// XXX: Need to clean up before returning
-		psMetadataAddItem(fpa->phu, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
-		status = true;
-	    }
+	    psTrace(__func__, 7, "Adding to the FPA level header...\n");
+	    psMetadataAddItem(fpa->hdu->header, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
+	    status = true;
+	} else {
+	    // In desperation, add to the PHU --- it HAS to be in the header somewhere!
+	    if (! fpa->phu) {
+		fpa->phu = psMetadataAlloc();
+	    }
+	    psTrace(__func__, 7, "Adding to the PHU...\n");
+	    psMetadataAddItem(fpa->phu, headerItem, PS_LIST_TAIL, PS_META_REPLACE);
+	    status = true;
 	}
 	psFree(headerItem);
@@ -182,4 +175,5 @@
 
     psMetadataItem *defItem = psMetadataLookup(defaults, concept->name);
+    bool status = false;		// Result of checking the database
     if (defItem) {
 	if (defItem->type == PS_DATA_METADATA) {
@@ -209,11 +203,17 @@
 			" --- ignored.\n", dependsOn);
 	    }
-
-	    defItem = psMetadataLookup(dependents, depItem->data.V);	// This is now what we were after
+	    
+	    defItem = psMetadataLookup(dependents, depItem->data.V); // This is now what we were after
+	}
+
+	status = compareConcepts(defItem, concept);
+	if (! status) {
+	    psError(PS_ERR_IO, true, "Concept %s is specified by default in the camera configuration, "
+		    "but doesn't match the actual value.\n", concept->name);
 	}
     }
 
     // XXX: Need to clean up before returning
-    return compareConcepts(defItem, concept);
+    return status;
 }
 
@@ -330,12 +330,16 @@
 {
     // Try headers, database, defaults in order
+    psTrace(__func__, 3, "Trying to set concept %s...\n", concept->name);
     bool status = setConceptInCamera(cell, concept); // Status for return
     if (! status) {
+	psTrace(__func__, 5, "Trying header....\n");
 	status = setConceptInHeader(fpa, chip, cell, concept);
     }
     if (! status) {
+	psTrace(__func__, 5, "Trying database....\n");
         status = setConceptInDB(fpa, chip, cell, db, concept);
     }
     if (! status) {
+	psTrace(__func__, 5, "Checking defaults....\n");
         status = setConceptInDefault(fpa, chip, cell, concept);
     }
