diff --git a/pub/CMakeLists.txt b/pub/CMakeLists.txt
index a0e4eb76be95311682f091f7a053630cf1a77a80..c2e86d6ee63a01ef7443f0c1f210df6597b1c24c 100644
--- a/pub/CMakeLists.txt
+++ b/pub/CMakeLists.txt
@@ -8,7 +8,7 @@ set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
 
 project(Frida)
 
-set(Frida_VERSION 2.4.0d)
+set(Frida_VERSION post-2.4.0d)
 
 include(CTest) # equivalent to "enable_testing() ???
 add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND}) # => 'make check' is an alias for 'ctest'
diff --git a/pub/lib/plot.cpp b/pub/lib/plot.cpp
index d96fd4b7445573ad3acb12da9c2a1905ac93c986..d84f873c140f4e7c6e9cf869887c8ce7e177bee5 100644
--- a/pub/lib/plot.cpp
+++ b/pub/lib/plot.cpp
@@ -595,8 +595,12 @@ namespace {
         plot->write_postscript(
             triv::wordexp_unique(fname), "overwrite", true, SVariRegistry::instance()->to_sMap());
         cout << "Plotted to " << fname << "\n";
-        string viewer = CNode::eval("ps_viewer")->to_s();
-        system((viewer+" "+fname+"&").c_str());
+        // Launch viewer - but only once per session.
+        static string viewer = "";
+        if (viewer=="") {
+            viewer = CNode::eval("ps_viewer")->to_s();
+            system((viewer+" "+fname+"&").c_str());
+        }
     }
 
 } // anonymous namespace
diff --git a/pub/plot/ps_plotter.cpp b/pub/plot/ps_plotter.cpp
index 64a316b3136a9bbada71b83002d6a3c578781cd6..9a10b4c822b15e1cb321d299275b4a89c8443518 100644
--- a/pub/plot/ps_plotter.cpp
+++ b/pub/plot/ps_plotter.cpp
@@ -66,6 +66,7 @@ void CPS_Plotter::start_frame2D(
     Y = &_Y;
     ps_snum = 0;
     ps_Doc = "";
+    ps_accu = "";
     ps_accu += ps_coord(X);
     ps_accu += ps_coord(Z);
     ps_accu += ps_coord(Y);