diff --git a/breath_plot.html b/breath_plot.html
index 32f6677c1ea0e5844b05c048c2827d60f4579023..c570058ad05c5bf316bc22ac046fca4d3890da95 100644
--- a/breath_plot.html
+++ b/breath_plot.html
@@ -585,7 +585,7 @@ var intervalID = null;
 
 // This sould be better as time, but is easier
 // to do as number of samples.
-var MAX_SAMPLES_TO_STORE_S = 16000;
+var MAX_SAMPLES_TO_STORE_S = 160;
 var MAX_REFRESH = false;
 var samples = [];
 var INITS_ONLY = true;
@@ -1118,6 +1118,16 @@ function get_date_of_sample(timestring,time_mark,ms) {
   return new Date(tm);
 }
 
+// epoch_ms is the milliseconds since the beginning of UNIX epoch
+function get_date_of_sample_simple(epoch_ms) {
+  var d = new Date();
+  var s = Math.floor(epoch_ms/1000);
+  var ms_in_s = epoch_ms-s;
+  var t = d.setTime(s);
+  d.setUTCMilliseconds(ms_in_s);
+  return d;
+}
+
 
 function process(samples) {
   const t = 200; // size of the window is 200ms
@@ -1214,7 +1224,7 @@ function process(samples) {
 
   // Return date in UTC time (as it comes to us)
   function time_of_extreme_samples(samples) {
-    var messages = samples.filter(s => s.event == 'E' && s.type == 'C');
+//    var messages = samples.filter(s => s.event == 'E' && s.type == 'C');
     // if our traces don't have monotone ms fields, this is an
     // unrecoverable error...
     var cur = 0;
@@ -1227,20 +1237,8 @@ function process(samples) {
     }
     var first_ms = samples[0].ms;
     var last_ms = samples[samples.length-1].ms;
-
-
-    if (messages.length == 0) {
-      return [null,null];
-    } else {
-      // We may need this to be more sophisticated; the is coming in
-      // from the PIRDS_webcgi as "Sat Jun 27 23:13:08 2020"
-      var timestring = messages[messages.length - 1].buff;
-      var time_mark = messages[messages.length - 1].ms;
-
-
-      return [get_date_of_sample(timestring,time_mark,first_ms),
-              get_date_of_sample(timestring,time_mark,last_ms)];
-    }
+    return [get_date_of_sample_simple(first_ms),
+            get_date_of_sample_simple(last_ms)];
   }
   var [start,finish] = time_of_extreme_samples(samples);
   $("#time_start").text((start) ? start.toISOStringSeconds() : null);
@@ -1464,40 +1462,50 @@ $("#startoperation").click(start_interval_timer);
 $("#stopoperation").click(stop_interval_timer);
 
 // Send PIRCS commands when START button is pressed
-$("#control-start").click(function(event) {
-  // Send a command to a connected device via serial port
-  console.log("Sending PIRCS...");
-  //Note: PIRCS uses specific units,
-  // which are designed to provide the right
-  // amount of precision without using
-  // floating point numbers.
-  // Often this means multiplying the
-  // common medical units by 10 to be the
-  // PIRCS units.
-  var dict = {
-    M: $("#control-mode").val(),
-    B: $("#control-rr").val()*10,
-    I: $("#control-ie").val(),
-    P: $("#control-pinsp").val()*10,
-    E: $("#control-peep").val()*10,
-  }
+    $("#control-start").click(
+      async function(event) {
+        // Send a command to a connected device via serial port
+        console.log("Sending PIRCS...");
+        //Note: PIRCS uses specific units,
+        // which are designed to provide the right
+        // amount of precision without using
+        // floating point numbers.
+        // Often this means multiplying the
+        // common medical units by 10 to be the
+        // PIRCS units.
+        var dict = {
+          M: $("#control-mode").val(),
+          B: $("#control-rr").val()*10,
+          I: $("#control-ie").val(),
+          P: $("#control-pinsp").val()*10,
+          E: $("#control-peep").val()*10,
+        }
 
-  for (var k in dict){
-    $.ajax({
-      //url: lh+"/api/pircs?com=C&par="+parName+"&int="+interp+"&mod="+modifier+"&val="+val,
-      type: 'GET',
-      url: 'http://localhost:5000/api/pircs/',
-      dataType: 'json',
-      data: { com: "C", par: k, int: "T", mod: "A", val: dict[k] }
-    }).done(function(result) {
-      console.log("result: " + JSON.stringify(result));
-    }).fail(function(xhr, ajaxOptions, thrownError) {
-      console.log("Error! " + xhr.status);
-      console.log(thrownError);
-    })
+        function sleep(ms) {
+          return new Promise(resolve => setTimeout(resolve, ms));
+        }
+        for (var k in dict){
+          // WARNING!!!!
+          // This is a workaround because we can easily create
+          // buffer overruns on the serial port of the an ESP32
+          // or Arduino. This really needs to be addressed in
+          // our Node Server, AND also made more robust in VentOS.
+          await sleep(500);
+          $.ajax({
+            //url: lh+"/api/pircs?com=C&par="+parName+"&int="+interp+"&mod="+modifier+"&val="+val,
+            type: 'GET',
+            url: 'http://localhost:5000/api/pircs/',
+            dataType: 'json',
+            data: { com: "C", par: k, int: "T", mod: "A", val: dict[k] }
+          }).done(function(result) {
+            console.log("result: " + JSON.stringify(result));
+          }).fail(function(xhr, ajaxOptions, thrownError) {
+            console.log("Error! " + xhr.status);
+            console.log(thrownError);
+          })
 
-  }
-});
+        }
+      });
 
 // Update values on slider change
 $("#control-mode").on("input", () => {
diff --git a/server.js b/server.js
index 8e4b9c596b68c078f4eb1f868672aa6bf270be02..add905f45625f3c8ad34c41f84124a08b326a92b 100755
--- a/server.js
+++ b/server.js
@@ -123,7 +123,13 @@ app.get('/api/pircs', function(req, res) {
 		err += "val not defined! ";
 	}
 	x += ' }\n';
-
+  // I think what we want to do is await here until
+  // we have gotten an acknowledgement of the command.
+  // that requires us to add a specific listener to stream
+  // we are reading to check it. This should help overiding the buffer.
+  // A way around this is to just change the html to set one value
+  // at a time. In any case there is a danger of a buffer overruns;
+  // this is very clear seen to be happening in the VentOS code.
 	if (err.length > 0){
 		err += "\n"
 		res.setHeader("Content-Type", "text/plain");