Index: trunk/ppSub/src/ppSubArguments.c
===================================================================
--- trunk/ppSub/src/ppSubArguments.c	(revision 42856)
+++ trunk/ppSub/src/ppSubArguments.c	(revision 42948)
@@ -105,4 +105,5 @@
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-updatemode", 0, "update mode?", false);
     psMetadataAddBool(arguments, PS_LIST_TAIL, "-require-subkernel", 0, "do not regenerate subkernel if missing?", false);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-skycell_id", 0, "skycell id", NULL);
 
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 2) {
@@ -111,5 +112,4 @@
 
     psMetadataAddStr(config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Name of the output image", argv[1]);
-
 
     const char *inImage = psMetadataLookupStr(NULL, arguments, "-inimage"); // Name of input image
@@ -152,4 +152,8 @@
     }
 
+    char *skycell_id = psMetadataLookupStr(NULL, arguments, "-skycell_id"); // Name of skycell_id
+    psLogMsg("ppSub", PS_LOG_INFO, "keykeykey o2: %s\n", skycell_id);
+    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "SKYCELL_ID", 0, "skycell id", skycell_id);
+
     data->stamps = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-stamps"));
 
Index: trunk/ppSub/src/ppSubDefineOutput.c
===================================================================
--- trunk/ppSub/src/ppSubDefineOutput.c	(revision 42856)
+++ trunk/ppSub/src/ppSubDefineOutput.c	(revision 42948)
@@ -30,4 +30,8 @@
 
     bool status = false;
+    float zptObs_in=0.;
+    float zptErr_in=0.;
+    float zptObs_ref=0.;
+    float zptErr_ref=0.;
 
     pmFPAview *view = ppSubViewReadout(); // View to readout
@@ -139,4 +143,31 @@
     psFree(inBase);
 
+    //read the zeropoint keywords
+    pmCell *cell_in = pmFPAfileThisCell(config->files, view, "PPSUB.INPUT");
+    pmHDU *hdu_in = pmHDUFromCell(cell_in);
+    zptObs_in = psMetadataLookupF32 (NULL, hdu_in->header, "ZPT_OBS");
+    zptErr_in = psMetadataLookupF32 (NULL, hdu_in->header, "ZPT_ERR");
+
+    pmCell *cell_ref = pmFPAfileThisCell(config->files, view, "PPSUB.REF");
+    pmHDU *hdu_ref = pmHDUFromCell(cell_ref);
+    zptObs_ref = psMetadataLookupF32 (NULL, hdu_ref->header, "ZPT_OBS");
+    zptErr_ref = psMetadataLookupF32 (NULL, hdu_ref->header, "ZPT_ERR");
+
+    if (zptObs_in != 0.) { 
+        psMetadataAddF32 (outHDU->header, PS_LIST_TAIL, "ZPT_OBS_IN", PS_META_REPLACE, "measured zero point",  zptObs_in);
+        psMetadataAddF32 (outHDU->header, PS_LIST_TAIL, "ZPT_ERR_IN", PS_META_REPLACE, "error on zero point",  zptErr_in);
+    }
+
+    if (zptObs_ref != 0.) { 
+        psMetadataAddF32 (outHDU->header, PS_LIST_TAIL, "ZPT_OBS_REF", PS_META_REPLACE, "measured zero point for template image",  zptObs_ref);
+        psMetadataAddF32 (outHDU->header, PS_LIST_TAIL, "ZPT_ERR_REF", PS_META_REPLACE, "error on zero point for template image",  zptErr_ref);
+    }
+
+    //also output the skycell id
+    char *skycell_id = psMetadataLookupStr(NULL, config->arguments, "SKYCELL_ID");
+    psLogMsg("ppSub", PS_LOG_INFO, "keykeykey o3: %s\n", skycell_id);
+
+    psMetadataAddStr (outHDU->header, PS_LIST_TAIL, "SKYCELL_ID", PS_META_REPLACE, "skycell_id",  skycell_id);
+
     ppSubVersionHeader(outHDU->header);
 
