Index: trunk/ippTools/src/camtool.c
===================================================================
--- trunk/ippTools/src/camtool.c	(revision 27739)
+++ trunk/ippTools/src/camtool.c	(revision 28043)
@@ -481,4 +481,40 @@
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
     PXOPT_LOOKUP_S16(quality, config->args, "-quality", false, false);
+
+    PXOPT_LOOKUP_STR(ver_pslib, config->args, "-ver_pslib", false, false);
+    PXOPT_LOOKUP_STR(ver_psmodules, config->args, "-ver_psmodules", false, false);
+    PXOPT_LOOKUP_STR(ver_psphot, config->args, "-ver_psphot", false, false);
+    PXOPT_LOOKUP_STR(ver_psastro, config->args, "-ver_psastro", false, false);
+    PXOPT_LOOKUP_STR(ver_ppstats, config->args, "-ver_ppstats", false, false);
+    PXOPT_LOOKUP_STR(ver_ppimage, config->args, "-ver_ppimage", false, false);
+    PXOPT_LOOKUP_STR(ver_streaks, config->args, "-ver_streaks", false, false);
+
+    PXOPT_LOOKUP_S32(maskfrac_npix, config->args, "-maskfrac_npix", false, false);
+    PXOPT_LOOKUP_F32(maskfrac_static, config->args, "-maskfrac_static", false, false);
+    PXOPT_LOOKUP_F32(maskfrac_dynamic, config->args, "-maskfrac_dynamic", false, false);
+    PXOPT_LOOKUP_F32(maskfrac_magic, config->args, "-maskfrac_magic", false, false);
+    PXOPT_LOOKUP_F32(maskfrac_advisory, config->args, "-maskfrac_advisory", false, false);
+
+    psTrace("czw.test",1,"Received versions: pslib %s psmodules %s psphot %s psastro %s ppstats %s ppImage %s streaks %s\n",
+	    ver_pslib,ver_psmodules,ver_psphot,ver_psastro,ver_ppstats,ver_ppimage,ver_streaks);
+    psString software_ver = NULL;
+    if ((ver_pslib)&&(ver_psmodules)) {
+      software_ver = pxMergeCodeVersions(ver_pslib,ver_psmodules);
+    }
+    if (ver_psphot) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_psphot);
+    }
+    if (ver_psastro) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_psastro);
+    }
+    if (ver_ppstats) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_ppstats);
+    }
+    if (ver_ppimage) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_ppimage);
+    }
+    if (ver_streaks) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_streaks);
+    }
 
 //    Get this from the chipRun
@@ -595,5 +631,11 @@
         path_base,
         fault,
-        quality
+	software_ver,
+	maskfrac_npix,
+	maskfrac_static,
+	maskfrac_dynamic,
+	maskfrac_magic,
+	maskfrac_advisory,
+	quality
         );
 
@@ -620,4 +662,29 @@
     // else continue on...
 
+
+    // Set camRun.software_ver to the appropriate value
+    if (!pxSetRunSoftware(config, "camRun", "cam_id", cam_id, software_ver)) {
+      if (!psDBRollback(config->dbh)) {
+	psError(PS_ERR_UNKNOWN, false, "database error");
+      }
+      psError(PS_ERR_UNKNOWN, false, "failed to set camRun.software_ver for cam_id: %" PRId64,
+	      cam_id);
+      psFree(output);
+      return(false);
+    }
+    // Set chipRun.maskfrac* to the appropriate values.
+    if (maskfrac_npix) {
+      if (!pxSetRunMaskfrac(config, "camRun", "cam_id",cam_id, maskfrac_npix, maskfrac_static,
+			    maskfrac_dynamic, maskfrac_magic, maskfrac_advisory)) {
+	if (!psDBRollback(config->dbh)) {
+	  psError(PS_ERR_UNKNOWN, false, "database error");
+	}
+	psError(PS_ERR_UNKNOWN, false, "failed to set camRun.maskstats for cam_id: %" PRId64,
+		cam_id);
+	psFree(output);
+	return(false);
+      }
+    }
+
     // since there is only one exp per 'new' set camRun.state = 'full'
     // propagate magicked state from chipRun
@@ -628,4 +695,5 @@
         return false;
     }
+    
     psFree(row);
 
