Index: trunk/ppTranslate/src/ppMops.h
===================================================================
--- trunk/ppTranslate/src/ppMops.h	(revision 34465)
+++ trunk/ppTranslate/src/ppMops.h	(revision 34472)
@@ -28,4 +28,7 @@
   psString output;                    // Output filename
   psU16 version;                      // Version (for parameters)
+  psString comment;                   // Comment associated with the first argument of the diff
+  psString obsMode;                   // Observation mode
+  psString difftype;                  // Either WW (Warp-Warp Diff) or WS (Warp-Stack Diff)
 } ppMopsArguments;
 
Index: trunk/ppTranslate/src/ppMopsArguments.c
===================================================================
--- trunk/ppTranslate/src/ppMopsArguments.c	(revision 34465)
+++ trunk/ppTranslate/src/ppMopsArguments.c	(revision 34472)
@@ -67,5 +67,7 @@
     args->output = NULL;
     args->version = 1;
-
+    args->comment = NULL;
+    args->obsMode = NULL;
+    args->difftype = NULL;
     return args;
 }
@@ -93,4 +95,7 @@
     psMetadataAddF32(arguments, PS_LIST_TAIL, "-astrom_rms", 0, "Astrometric solution RMS", NAN);
     psMetadataAddU16(arguments, PS_LIST_TAIL, "-version", 0, "CMF file version", 0);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-comment", 0, "Exposure comment", NULL);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-obsmode", 0, "Observation mode", NULL);
+    psMetadataAddStr(arguments, PS_LIST_TAIL, "-difftype", 0, "Either WW (Warp-Warp Diff) or WS (Warp-Stack Diff)", NULL);
     if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 3) {
         usage(argv[0], arguments);
@@ -120,4 +125,7 @@
     args->rmsAstrom = psMetadataLookupF32(NULL, arguments, "-astrom_rms");
     args->version = psMetadataLookupU16(NULL, arguments, "-version");
+    args->comment = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-comment"));
+    args->obsMode = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-obsmode"));
+    args->difftype = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-difftype"));
 
     psTrace("ppMops.args", 1, "Done parsing command-line arguments\n");
Index: trunk/ppTranslate/src/ppMopsGetSkyChipPsfVersion.c
===================================================================
--- trunk/ppTranslate/src/ppMopsGetSkyChipPsfVersion.c	(revision 34465)
+++ trunk/ppTranslate/src/ppMopsGetSkyChipPsfVersion.c	(revision 34472)
@@ -16,5 +16,5 @@
   } else if (strcmp(version, "PS1_DV3") == 0) {
     psFree(headerSkyChip);
-    return 2;
+    return 3;
   }
   psWarning("Unsupported EXTTYPE in SkyChip.psf table: [%s]", version);
Index: trunk/ppTranslate/src/ppMopsRead.c
===================================================================
--- trunk/ppTranslate/src/ppMopsRead.c	(revision 34465)
+++ trunk/ppTranslate/src/ppMopsRead.c	(revision 34472)
@@ -8,5 +8,5 @@
 #include "ppMops.h"
 
-static void addDummyValues(psMetadata* md, long size);
+static void addDummyValues(psMetadata* md, long size, int version);
 static void replaceDummyValuesF32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes);
 
@@ -116,5 +116,5 @@
     if (skyChipPsfVersion >= 2) {
       //First: append all the new columns that we want to the existing table
-      addDummyValues(det->table, size);
+      addDummyValues(det->table, size, args->version);
       if (!psFitsMoveExtName(fits, "SkyChip.xfit")) {
 	psTrace("ppMops.read", 3, "No fitted trails extension");
@@ -147,4 +147,17 @@
 	  replaceDummyValuesF32("EXT_WIDTH_MIN_ERR",  fittedTrails, det->table, idet);
 	  replaceDummyValuesF32("EXT_THETA_ERR",  fittedTrails, det->table, idet);
+	  if (skyChipPsfVersion >= 3) {
+	    replaceDummyValuesF32("RA_EXT",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("RA_EXT_SIGMA",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("DEC_EXT",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("DEC_EXT_SIGMA",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("POSANG_EXT",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("PLTSCALE_EXT",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("EXT_FLUX",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("EXT_CAL_MAG",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("EXT_MAG_SIG",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("EXT_CHISQ",  fittedTrails, det->table, idet);
+	    replaceDummyValuesF32("EXT_NDOF",  fittedTrails, det->table, idet);
+	  }
 	}
       }
@@ -257,5 +270,5 @@
 }
 
-static void addDummyValues(psMetadata* md, long size) {
+static void addDummyValues(psMetadata* md, long size, int version) {
   psMetadataAdd(md, PS_LIST_TAIL, "X_EXT", PS_DATA_VECTOR, "EXT model x coordinate", createDummyF32(size));
   psMetadataAdd(md, PS_LIST_TAIL, "Y_EXT", PS_DATA_VECTOR, "EXT model y coordinate", createDummyF32(size));
@@ -271,4 +284,18 @@
   psMetadataAdd(md, PS_LIST_TAIL, "EXT_WIDTH_MIN_ERR",  PS_DATA_VECTOR, "EXT width error (minor axis)", createDummyF32(size));
   psMetadataAdd(md, PS_LIST_TAIL, "EXT_THETA_ERR",  PS_DATA_VECTOR, "EXT orientation angle (error)", createDummyF32(size));
+  if (version >= 3) {
+    psTrace("ppMops.read", 10, "Adding columns for version PS1_DV%d\n", version);
+    psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT",  PS_DATA_VECTOR, "Fitted centroid RA", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT_SIGMA",  PS_DATA_VECTOR, "Fitted RA sigma", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT",  PS_DATA_VECTOR, "Fitted centroid DEC", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT_SIGMA",  PS_DATA_VECTOR, "Fitted DEC sigma", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "POSANG_EXT",  PS_DATA_VECTOR, "Fitted position angle", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "PLTSCALE_EXT",  PS_DATA_VECTOR, "Plate scale at centroid", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "EXT_FLUX",  PS_DATA_VECTOR, "Fitted flux", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "EXT_CAL_MAG",  PS_DATA_VECTOR, "Calibrated mag", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "EXT_MAG_SIG",  PS_DATA_VECTOR, "Mag sigma", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "EXT_CHISQ",  PS_DATA_VECTOR, "Chi^2 of fit", createDummyF32(size));
+    psMetadataAdd(md, PS_LIST_TAIL, "EXT_NDOF",  PS_DATA_VECTOR, "Fit degrees of freedom", createDummyF32(size));
+  }
 }
 
Index: trunk/ppTranslate/src/ppMopsWrite.c
===================================================================
--- trunk/ppTranslate/src/ppMopsWrite.c	(revision 34465)
+++ trunk/ppTranslate/src/ppMopsWrite.c	(revision 34472)
@@ -74,4 +74,6 @@
     psMetadataAddF32(header, PS_LIST_TAIL, "AIRMASS", 0, "Airmass of exposure", det->airmass);
     psMetadataAddF32(header, PS_LIST_TAIL, "SEEING", 0, "Mean seeing", seeingStats->sampleMedian);
+    //MOPS want the name FWHM for SEEING
+    psMetadataAddF32(header, PS_LIST_TAIL, "FWHM", 0, "Mean seeing", det->seeing);
   } else {
     psWarning("no inputs with surviving detections. output header will be incomplete");
@@ -79,6 +81,11 @@
   psMetadataAddStr(header, PS_LIST_TAIL, "OBSCODE", 0, "IAU Observatory code", OBSERVATORY_CODE);
   psMetadataAddF32(header, PS_LIST_TAIL, "MAGZP", 0, "Magnitude zero point", args->zp);
+  //MOPS want the name ZEROPOINT for MAGZP
+  psMetadataAddF32(header, PS_LIST_TAIL, "ZEROPOINT", 0, "Magnitude zero point", args->zp);
   psMetadataAddF32(header, PS_LIST_TAIL, "MAGZPERR", 0, "Error in magnitude zero point", args->zpErr);
   psMetadataAddF32(header, PS_LIST_TAIL, "ASTRORMS", 0, "RMS of astrometric fit", args->rmsAstrom);
+  psMetadataAddStr(header, PS_LIST_TAIL, "COMMENT", 0, "Exposure comment", args->comment);
+  psMetadataAddStr(header, PS_LIST_TAIL, "OBS_MODE", 0, "Exposure observation mode", args->obsMode);
+  psMetadataAddStr(header, PS_LIST_TAIL, "DIFFTYPE", 0, "WW: Warp-Warp diff / WS: Warp-Stack diff / SW: Stack-Warp diff", args->difftype);
 
   //field in header that tells about the CMF version
@@ -187,5 +194,27 @@
                      0);
       if (args->version == 3) {
-        // TODO: Write data of version 3 (see ICD)
+	// Write data of version 3 (see ICD)
+	psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT",         PS_DATA_F32, "Fitted centroid RA", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT_SIGMA",   PS_DATA_F32, "Fitted RA sigma", 
+		       0);
+	psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT",        PS_DATA_F32, "Fitted centroid DEC", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT_SIGMA",  PS_DATA_F32, "Fitted DEC sigma", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "POSANG_EXT",     PS_DATA_F32, "Fitted position angle", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "PLTSCALE_EXT",   PS_DATA_F32, "Plate scale at centroid", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLUX",       PS_DATA_F32, "Fitted flux", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "EXT_CAL_MAG",    PS_DATA_F32, "Calibrated mag", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "EXT_MAG_SIG",    PS_DATA_F32, "Mag sigma", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "EXT_CHISQ",      PS_DATA_F32, "Chi^2 of fit", 
+		       0);
+ 	psMetadataAdd (row, PS_LIST_TAIL, "EXT_NDOF",       PS_DATA_F32, "Fit degrees of freedom", 
+		       0);
       }
     }
@@ -276,4 +305,18 @@
       addColumn("EXT_THETA_ERR", NULL, 0);
     }
+    if (args->version >= 3) {
+      addColumn("RA_EXT", NULL, 0);
+      addColumn("RA_EXT_SIGMA", NULL, 0);
+      addColumn("DEC_EXT", NULL, 0);
+      addColumn("DEC_EXT_SIGMA", NULL, 0);
+      addColumn("POSANG_EXT", NULL, 0);
+      addColumn("PLTSCALE_EXT", NULL, 0);
+      addColumn("EXT_FLUX", NULL, 0);
+      addColumn("EXT_CAL_MAG", NULL, 0);
+      addColumn("EXT_MAG_SIG", NULL, 0);
+      addColumn("EXT_CHISQ", NULL, 0);
+      addColumn("EXT_NDOF", NULL, 0);
+    }
+
     if (!psFitsWriteTableAllColumns(fits, header, table, OUT_EXTNAME)) {
       psError(psErrorCodeLast(), false, "Unable to write table");
