Index: trunk/archive/scripts/src/phase2/pmFPAConceptsGet.c
===================================================================
--- trunk/archive/scripts/src/phase2/pmFPAConceptsGet.c	(revision 5462)
+++ trunk/archive/scripts/src/phase2/pmFPAConceptsGet.c	(revision 5564)
@@ -46,6 +46,6 @@
     if (mdStatus && strlen(keyword) > 0) {
 	// We have a FITS header to look up --- search each level
-	if (cell && cell->data) {
-	    psMetadataItem *cellItem = psMetadataLookup(cell->data->header, keyword);
+	if (cell && cell->hdu) {
+	    psMetadataItem *cellItem = psMetadataLookup(cell->hdu->header, keyword);
 	    if (cellItem) {
 		// XXX: Need to clean up before returning
@@ -54,6 +54,6 @@
 	}
 
-	if (chip && chip->data) {
-	    psMetadataItem *chipItem = psMetadataLookup(chip->data->header, keyword);
+	if (chip && chip->hdu) {
+	    psMetadataItem *chipItem = psMetadataLookup(chip->hdu->header, keyword);
 	    if (chipItem) {
 		// XXX: Need to clean up before returning
@@ -62,6 +62,6 @@
 	}
 
-	if (fpa->data) {
-	    psMetadataItem *fpaItem = psMetadataLookup(fpa->data->header, keyword);
+	if (fpa->hdu) {
+	    psMetadataItem *fpaItem = psMetadataLookup(fpa->hdu->header, keyword);
 	    if (fpaItem) {
 		// XXX: Need to clean up before returning
@@ -371,5 +371,11 @@
 	switch (item->type) {
 	  case PS_DATA_STRING:
-	    value = item->data.V;
+	    value = psMemIncrRefCounter(item->data.V);
+	    break;
+	  case PS_DATA_F32:
+	    psStringAppend(&value, "%f", item->data.F32);
+	    break;
+	  case PS_DATA_S32:
+	    psStringAppend(&value, "%d", item->data.S32);
 	    break;
 	  default:
@@ -384,4 +390,5 @@
 
     psMetadataAdd(concepts, PS_LIST_TAIL, name, PS_DATA_STRING, comment, value);
+    psFree(value);
 }
 
@@ -400,5 +407,6 @@
     }
 
-    // FPA.NAME --- added by pmFPAConstruct
+    // FPA.NAME
+    p_pmFPAConceptGetString(fpa, NULL, NULL, db, fpa->concepts, "FPA.NAME", "Name of FPA");
 
     // FPA.AIRMASS
@@ -450,5 +458,5 @@
 	    
 	    // How to interpret the RA
-	    psMetadata *camera = fpa->camera; // Camera configuration data
+	    const psMetadata *camera = fpa->camera; // Camera configuration data
 	    bool mdok = true;		// Status of MD lookup
 	    psMetadata *formats = psMetadataLookupMD(&mdok, camera, "FORMATS");
@@ -519,5 +527,5 @@
 	    
 	    // How to interpret the DEC
-	    psMetadata *camera = fpa->camera; // Camera configuration data
+	    const psMetadata *camera = fpa->camera; // Camera configuration data
 	    bool mdok = true;		// Status of MD lookup
 	    psMetadata *formats = psMetadataLookupMD(&mdok, camera, "FORMATS");
@@ -653,10 +661,10 @@
 		} else if (strcasecmp(source, "HEADER") == 0) {
 		    psMetadata *header = NULL; // The FITS header
-		    if (cell->data) {
-			header = cell->data->header;
-		    } else if (chip->data) {
-			header = chip->data->header;
-		    } else if (fpa->data) {
-			    header = fpa->data->header;
+		    if (cell->hdu) {
+			header = cell->hdu->header;
+		    } else if (chip->hdu) {
+			header = chip->hdu->header;
+		    } else if (fpa->hdu) {
+			    header = fpa->hdu->header;
 		    }
 		    if (! header) {
@@ -718,10 +726,10 @@
 		    } else if (strcasecmp(source, "HEADER") == 0) {
 			psMetadata *header = NULL; // The FITS header
-			if (cell->data) {
-			    header = cell->data->header;
-			} else if (chip->data) {
-			    header = chip->data->header;
-			} else if (fpa->data) {
-			    header = fpa->data->header;
+			if (cell->hdu) {
+			    header = cell->hdu->header;
+			} else if (chip->hdu) {
+			    header = chip->hdu->header;
+			} else if (fpa->hdu) {
+			    header = fpa->hdu->header;
 			}
 			if (! header) {
@@ -832,5 +840,5 @@
 	} else {
 	    // Get format
-	    psMetadata *camera = fpa->camera; // The camera configuration data
+	    const psMetadata *camera = fpa->camera; // The camera configuration data
 	    bool mdok = true;		// Status of MD lookup
 	    psMetadata *formats = psMetadataLookupMD(&mdok, camera, "FORMATS");
@@ -848,10 +856,10 @@
 				// timeString contains headers for the date and time
 				psMetadata *header = NULL; // The FITS header
-				if (cell->data) {
-				    header = cell->data->header;
-				} else if (chip->data) {
-				    header = chip->data->header;
-				} else if (fpa->data) {
-				    header = fpa->data->header;
+				if (cell->hdu) {
+				    header = cell->hdu->header;
+				} else if (chip->hdu) {
+				    header = chip->hdu->header;
+				} else if (fpa->hdu) {
+				    header = fpa->hdu->header;
 				}
 				if (! header) {
