diff --git a/pub/CHANGELOG b/pub/CHANGELOG
index d6cf06854ccfff52bbe5b2593a0a9727eeeb3896..bc6ee9e62591ae88f3de2340ba0a4077781e1510 100644
--- a/pub/CHANGELOG
+++ b/pub/CHANGELOG
@@ -1,7 +1,8 @@
-- Use plot.Y.force in 2d plotting
-- Use wx, wy, wh in setting ticks and tacks for easier editing of PS file
-- Correct ticks and tacks for small log range
+- use plot.Y.force in 2d plotting
+- use wx, wy, wh in setting ticks and tacks for easier editing of PS file
+- correct ticks and tacks for small log range
 - correct handling of Z in oixy
+- pertinent error message when calling 'a' before 'p'
 
 Release 2.4.0b of 21apr17:
 
diff --git a/pub/lib/plot.cpp b/pub/lib/plot.cpp
index ec8e59cb1ab08650c4cd8a9175dcd0ca44136d7d..dc7d5e766a0765a7e46d6e86525594eb4ce63909 100644
--- a/pub/lib/plot.cpp
+++ b/pub/lib/plot.cpp
@@ -466,7 +466,8 @@ namespace {
 
             // draw new frame:
             plot->start_frame1D("Frida version " VERSION, xCo.str_ps(), yCo.str_ps());
-        }
+        } else
+            plot->reopen_frame1D();
 
         // plot:
         while (const COlo* f = fiter.next()) {
diff --git a/pub/plot/dualplot.cpp b/pub/plot/dualplot.cpp
index 5b1e0c2d6e1e5cfc98f3d375cf75b5e99acd231c..b4ec369a678a66a6167e3991ac0f396eccb35dc4 100644
--- a/pub/plot/dualplot.cpp
+++ b/pub/plot/dualplot.cpp
@@ -119,8 +119,16 @@ void CPlot::start_frame1D(const string& caller, const string& xlabel, const stri
 {
     gnuPlotter->start_frame(X, Y);
     ps_Plotter->start_frame1D(caller, X, Y, xlabel, ylabel);
+    open1D = true;
 }
 
+//! Start adding to plot.
+
+void CPlot::reopen_frame1D()
+{
+    if (!open1D)
+        throw S("plot frame is not open for adding");
+}
 
 //! Clear 2D plot canvas, and print coordinate ranges
 
diff --git a/pub/plot/dualplot.hpp b/pub/plot/dualplot.hpp
index 9f470fdc1ec1d0001ce3aa5a810cf57f87f63787..ea79c7afb80e7b8c8710861db01fe494c9f24d66 100644
--- a/pub/plot/dualplot.hpp
+++ b/pub/plot/dualplot.hpp
@@ -40,6 +40,7 @@ public:
     void gp_write(const std::string& in);
     void start_frame1D(
         const std::string& caller, const std::string& xlabel, const std::string& ylabel);
+    void reopen_frame1D();
     void start_frame2D(const std::string& caller);
     void close_frame2D(
         const std::string& xlabel, const std::string& zlabel, const std::string& ylabel);
@@ -61,4 +62,5 @@ public:
 private:
     std::shared_ptr<class CGnuPlotter> gnuPlotter;
     std::shared_ptr<class CPS_Plotter> ps_Plotter;
+    bool open1D = false;
 };