Index: trunk/ippTools/src/stacktool.c
===================================================================
--- trunk/ippTools/src/stacktool.c	(revision 27722)
+++ trunk/ippTools/src/stacktool.c	(revision 28043)
@@ -370,4 +370,5 @@
             tess_id,
             filter,
+	    NULL, // software_ver
             note);
 
@@ -526,4 +527,5 @@
         tess_id,
         filter,
+	NULL, // software_ver
         note);
 
@@ -844,4 +846,30 @@
     PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", 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_ppstats, config->args, "-ver_ppstats", false, false);
+    PXOPT_LOOKUP_STR(ver_ppstack, config->args, "-ver_ppstack", false, false);
+    PXOPT_LOOKUP_STR(ver_streaks, config->args, "-ver_streaks", false, false);
+
+    psTrace("czw.test",1,"Received versions: pslib %s psmodules %s psphot %s ppstats %s ppstack %s streaks %s\n",
+	    ver_pslib,ver_psmodules,ver_psphot,ver_ppstats,ver_ppstack,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_ppstats) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_ppstats);
+    }
+    if (ver_ppstack) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_ppstack);
+    }
+    if (ver_streaks) {
+      software_ver = pxMergeCodeVersions(software_ver,ver_streaks);
+    }
+    
     // default values
     PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
@@ -883,4 +911,5 @@
                                good_frac,
                                fault,
+			       software_ver,
                                quality
           )) {
@@ -893,4 +922,14 @@
 
     if (fault == 0) {
+	// Set stackRun software if we are finished.
+	if (!pxSetRunSoftware(config, "stackRun", "stack_id", stack_id, software_ver)) {
+	  if (!psDBRollback(config->dbh)) {
+	    psError(PS_ERR_UNKNOWN, false, "database error");
+	  }
+	  psError(PS_ERR_UNKNOWN, false, "failed to set stackRun.software_ver for stack_id: %" PRId64,
+		  stack_id);
+	  return(false);
+	}
+
         if (!setstackRunState(config, stack_id, "full")) {
             if (!psDBRollback(config->dbh)) {
