Index: /trunk/ppTranslate/src/ppMops.h
===================================================================
--- /trunk/ppTranslate/src/ppMops.h	(revision 37429)
+++ /trunk/ppTranslate/src/ppMops.h	(revision 37430)
@@ -6,5 +6,5 @@
 
 #define IN_EXTNAME "SkyChip.psf"        // Extension name for data in input
-#define OBSERVATORY_CODE "F51"          // IAU Observatory Code
+// #define OBSERVATORY_CODE "F51"          // IAU Observatory Code
 #define OUT_EXTNAME "MOPS_TRANSIENT_DETECTIONS" // Extension name for data in output
 #define SOURCE_MASK (PM_SOURCE_MODE_FAIL | PM_SOURCE_MODE_BADPSF | PM_SOURCE_MODE_SATURATED | \
@@ -23,4 +23,6 @@
   psS64 warp_id;                      // Warp stage identifier
   psS64 diff_id;                      // Diff stage identifier
+  psString camera;                    // Camera name
+  psString obscode;                   // observatory code (derived from camera)
   bool positive;                      // Sense of subtraction, T=positive, F=negative
   float zp, zpErr;                    // Magnitude zero point and error
Index: /trunk/ppTranslate/src/ppMopsArguments.c
===================================================================
--- /trunk/ppTranslate/src/ppMopsArguments.c	(revision 37429)
+++ /trunk/ppTranslate/src/ppMopsArguments.c	(revision 37430)
@@ -42,4 +42,6 @@
 static void mopsArgumentsFree(ppMopsArguments *args)
 {
+    psFree(args->camera);
+    psFree(args->obscode);
     psFree(args->input);
     psFree(args->exp_name);
@@ -63,4 +65,6 @@
     args->warp_id = 0;
     args->diff_id = 0;
+    args->camera = NULL;
+    args->obscode = NULL;
     args->zp = NAN;
     args->positive = true;
@@ -94,4 +98,5 @@
     psMetadataAddS64(arguments, PS_LIST_TAIL, "-warp_id", 0, "Warp stage identifier", 0);
     psMetadataAddS64(arguments, PS_LIST_TAIL, "-diff_id", 0, "Diff stage identifier", 0);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-camera", 0, "Camera name", "No comment provided");
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-inverse", 0, "Inverse subtraction?", false);
     psMetadataAddF32(arguments, PS_LIST_TAIL, "-zp", 0, "Magnitude zero point", NAN);
@@ -126,4 +131,5 @@
     args->warp_id = psMetadataLookupS64(NULL, arguments, "-warp_id");
     args->diff_id = psMetadataLookupS64(NULL, arguments, "-diff_id");
+    args->camera = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-camera"));
     args->positive = !psMetadataLookupBool(NULL, arguments, "-inverse"); // NOTE: negated
     args->zp = psMetadataLookupF32(NULL, arguments, "-zp");
@@ -137,4 +143,19 @@
     args->shutoutc = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-shutoutc"));
 
+    if (!args->camera) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "camera name not provided.");
+        return NULL;
+    }
+    if (!strcasecmp(args->camera, "GPC1")) {
+      args->obscode = psStringCopy("F51");
+    }
+    if (!strcasecmp(args->camera, "GPC2")) {
+      args->obscode = psStringCopy("F52");
+    }
+    if (!args->obscode) {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "unknown camera name.");
+        return NULL;
+    }
+
     psTrace("ppMops.args", 1, "Done parsing command-line arguments\n");
 
Index: /trunk/ppTranslate/src/ppMopsWrite.c
===================================================================
--- /trunk/ppTranslate/src/ppMopsWrite.c	(revision 37429)
+++ /trunk/ppTranslate/src/ppMopsWrite.c	(revision 37430)
@@ -89,5 +89,5 @@
     psWarning("no inputs with surviving detections. output header will be incomplete");
   }
-  psMetadataAddStr(header, PS_LIST_TAIL, "OBSCODE", 0, "IAU Observatory code", OBSERVATORY_CODE);
+  psMetadataAddStr(header, PS_LIST_TAIL, "OBSCODE", 0, "IAU Observatory code", args->obscode);
   psMetadataAddF32(header, PS_LIST_TAIL, "MAGZP", 0, "Magnitude zero point", args->zp);
   //MOPS want the name ZEROPOINT for MAGZP
