diff --git a/pub/lib/plot.cpp b/pub/lib/plot.cpp
index bd91b785a1d7b61c0426fe3e6ab22642fb5282ac..ec8e59cb1ab08650c4cd8a9175dcd0ca44136d7d 100644
--- a/pub/lib/plot.cpp
+++ b/pub/lib/plot.cpp
@@ -565,22 +565,24 @@ namespace {
             plot->Y.set_limits(yinf-1e-4*std::abs(yinf), ysup+1e-4*std::abs(ysup));
         // plot
         plot->start_frame2D("Frida version " VERSION);
+        bool recent_empty_line = false;
         for (size_t j=0; j<m; ++j) {
             const CSpec* s = fd->VS(j);
             vector<double> xlim = triv::histogram_limits(s->x);
-            bool block_empty = false;
             for (size_t i=0; i<s->size(); ++i) {
                 if (  (plot->Y.force || plot->Y.contains(s->y[i]))
                     && plot->X.contains(xlim[i]) && plot->X.contains(xlim[i+1])
                     && plot->Z.contains(zlim[j]) && plot->Z.contains(zlim[j+1])) {
-                    block_empty = false;
                     plot->ps_line(
                         str(format("%13.7g wx %13.7g wx  %13.7g wy %13.7g wy  %13.7g wH t2d")
                             % xlim[i] % xlim[i+1] % zlim[j] % zlim[j+1] % s->y[i] ) );
+                    recent_empty_line = false;
                 }
             }
-            if (!block_empty)
+            if (!recent_empty_line) {
                 plot->ps_line("");
+                recent_empty_line = true;
+            }
         }
         plot->close_frame2D(fd->xco.str_ps(), fd->ZCo[0].str_ps(), fd->yco.str_ps());
         // doclines