Index: /trunk/pswarp/src/pswarpLoop.c
===================================================================
--- /trunk/pswarp/src/pswarpLoop.c	(revision 40353)
+++ /trunk/pswarp/src/pswarpLoop.c	(revision 40354)
@@ -124,9 +124,14 @@
 
 			// Determine the reference catalog used
-			if (!refcat) {
-			  refcat = psMetadataLookupStr(NULL, astromRO->parent->parent->hdu->header, "PSREFCAT");
-			  psMetadataAddStr(output->fpa->analysis, PS_LIST_TAIL, "REFERENCE_CATALOG", PS_META_REPLACE, "Reference catalog used for calibration.", refcat);
+			if ((!refcat)&&(astromRO)) {
+			  if ((astromRO->parent->parent->hdu->header)&&(output->fpa->analysis)) {
+			    psMetadataItem *refItem = psMetadataLookup(astromRO->parent->parent->hdu->header, "PSREFCAT");
+			    if (refItem) {
+			      refcat = psMetadataLookupStr(NULL, astromRO->parent->parent->hdu->header, "PSREFCAT");
+			      psMetadataAddStr(output->fpa->analysis, PS_LIST_TAIL, "REFERENCE_CATALOG", PS_META_REPLACE,
+					       "Reference catalog used for calibration.", refcat);
+			    }
+			  }
 			}
-
 			
 		    }
Index: /trunk/pswarp/src/pswarpLoopBackground.c
===================================================================
--- /trunk/pswarp/src/pswarpLoopBackground.c	(revision 40353)
+++ /trunk/pswarp/src/pswarpLoopBackground.c	(revision 40354)
@@ -137,8 +137,13 @@
 		    if (astrom != input) {
 		      pmReadout *astromRO = pmFPAviewThisReadout(view, astrom->fpa); // Readout for astrometry
-		      if (!refcat) {
-			refcat = psMetadataLookupStr(NULL, astromRO->parent->parent->hdu->header, "PSREFCAT");
-
-			psMetadataAddStr(output->fpa->analysis, PS_LIST_TAIL, "REFERENCE_CATALOG", PS_META_REPLACE, "Reference catalog used for calibration.", refcat);
+		      if ((!refcat)&&(astromRO)) {
+			if ((astromRO->parent->parent->hdu->header)&&(output->fpa->analysis)) {
+			  psMetadataItem *refItem = psMetadataLookup(astromRO->parent->parent->hdu->header, "PSREFCAT");
+			  if (refItem) {
+			    refcat = psMetadataLookupStr(NULL, astromRO->parent->parent->hdu->header, "PSREFCAT");
+			    psMetadataAddStr(output->fpa->analysis, PS_LIST_TAIL, "REFERENCE_CATALOG", PS_META_REPLACE,
+					     "Reference catalog used for calibration.", refcat);
+			  }
+			}
 		      }
 		    }
Index: /trunk/pswarp/src/pswarpUpdateMetadata.c
===================================================================
--- /trunk/pswarp/src/pswarpUpdateMetadata.c	(revision 40353)
+++ /trunk/pswarp/src/pswarpUpdateMetadata.c	(revision 40354)
@@ -20,5 +20,12 @@
     bool bilevelAstrometry = psMetadataLookupBool (NULL, skycell->analysis, "ASTROMETRY.BILEVEL");
 
-    psString refcat = psMetadataLookupStr (NULL, output->analysis, "REFERENCE_CATALOG");
+    psString refcat = NULL;
+
+    if ((output)&&(output->analysis)) {    
+      psMetadataItem *refItem = psMetadataLookup(output->analysis, "REFERENCE_CATALOG");
+      if (refItem) {
+	refcat = psMetadataLookupStr (NULL, output->analysis, "REFERENCE_CATALOG");
+      }
+    }
     pmChip *chip;
     while ((chip = pmFPAviewNextChip (view, output, 1)) != NULL) {
@@ -167,5 +174,8 @@
 
     if (refcat) {
-      psMetadataAddStr(output->hdu->header, PS_LIST_TAIL, "PSREFCAT", PS_META_REPLACE, "Reference catalog used for calibration", refcat);
+      if ((output)&&(output->hdu)&&(output->hdu->header)) {
+	psMetadataAddStr(output->hdu->header, PS_LIST_TAIL, "PSREFCAT", PS_META_REPLACE,
+			 "Reference catalog used for calibration", refcat);
+      }
     }
     
