diff --git a/breath_plot.html b/breath_plot.html
index 4d5ec33d0571021645d0b6c92179e139d8a14870..81eca687da57f10b0f2ece1c595001eddaa67121 100644
--- a/breath_plot.html
+++ b/breath_plot.html
@@ -1406,29 +1406,61 @@ function compute_current_TRIP(TRIP_min,TRIP_max, samples)
 
 
 
-  // net Pressure-Volume Work:
-  // integral under P*V curve
-  function PressureVolumeWork(samples, a,z) {
+  // A routine to calculate work per breath
+  function PressureVolumeWork(breath, transitions, samples) {
     // -1 for quadilateral approximation
-    var flows = samples.filter(s => s.event == 'M' && s.type == 'F');
-    var pressures = samples.filter(s => s.event == 'M' && s.type == 'D' && s.loc == 'A');
+    if (breath.vol_i == 0) {
+      return("null");
+    } else {
+    var beginTransition = transitions[breath.trans_begin_inhale];
+    var beginTime_ms = beginTransition.ms;
+    var endTransition = transitions[breath.trans_cross_zero];
+    var endTime_ms = endTransition.ms;
+    var flows = samples.filter(s => s.event == 'M' && s.type == 'F' && s.ms >= beginTime_ms && s.ms <= endTime_ms);
+    var pressures = samples.filter(s => s.event == 'M' && s.type == 'D' && s.loc == 'A'&& s.ms >= beginTime_ms && s.ms <= endTime_ms);
+    console.log("begin transition time, end transition time:",beginTime_ms,endTime_ms);
+    //var pressureVolume_prod= 0;
+    //for(var j = a; j < z-1; j++) {
+    //  // I'll use qadrilateral approximation.
+    //  // We'll form each quadrilateral between two samples.
+    //  var ms = flows[j+1].ms - flows[j].ms;
+    //  var ht = (((flows[j+1].val*pressures[j+1].val) + (flows[j].val*pressures[j+1].val ))/2) * CONVERT_PIRDS_TO_SLM;
+    //  // Flow in standard liters per minute,
+    //  // divide by 60000 to get liters/s
+    //  pressureVolume_prod += ms * ht/60000;
+    //  if (isNaN(pressureVolume_prod)) {
+    //    debugger;
+    //  }
+    // }
+    // pressure cm H2O --> atm (divide by 1033)
+    // return pressureVolume_prod/1033
 
-    var pressureVolume_prod= 0;
-    for(var j = a; j < z-1; j++) {
-      // I'll use qadrilateral approximation.
-      // We'll form each quadrilateral between two samples.
-      var ms = flows[j+1].ms - flows[j].ms;
-      var ht = (((flows[j+1].val*pressures[j+1].val) + (flows[j].val*pressures[j+1].val ))/2) * CONVERT_PIRDS_TO_SLM;
-      // Flow in standard liters per minute,
-      // divide by 60000 to get liters/s
-      pressureVolume_prod += ms * ht/60000;
-      if (isNaN(pressureVolume_prod)) {
-        debugger;
-      }
+    // average pressure * average flow ~ approximation of work
+    var pAv_cm = 0;
+    for (var i = 0; i<pressures.length; i++) {
+      pAv_cm += pressures[i].val/10;
+    }
+    pAv_cm /= pressures.length;
+    var pressures_pascales = pAv_cm * 98.0665; //cm to pasc.
+    var fAv_lpm = 0;
+    for (var i = 0; i<flows.length; i++) {
+      fAv_lpm += flows[i].val/1000;
+    }
+    fAv_lpm /= flows.length;
+    console.log("flows:",flows,"\npressures:",pressures)
+    console.log("pAv, vAv = ",pAv_cm,fAv_lpm);
+    var flow_cubicMetersPerSecond = fAv_lpm/1000/60; //lpm to cmps 
+    var avPower = pressures_pascales*flow_cubicMetersPerSecond; // Watts
+    var avWork = avPower * (endTime_ms - beginTime_ms)/1000; // Joules
+    console.log("Power (Watts):",avPower);
+    console.log("Work (Joules):",avWork);
+    return avWork;
     }
-    // pressure cm H2O --> atm (divide by 1033)
-    return pressureVolume_prod/1033
   }
+  
+
+
+
 
   function testWork(samples){ // breaths give us inspiration transition points
     var flows = samples.filter(s => s.event == 'M' && s.type == 'F');
@@ -1441,6 +1473,10 @@ function compute_current_TRIP(TRIP_min,TRIP_max, samples)
     var transitions = compute_transitions(vm,flows);
     var breaths = compute_breaths_based_without_negative_flow(transitions,flows);
     console.log(breaths);
+    for(i = 0; i<breaths.length; i++) {
+      var w = PressureVolumeWork(breaths[i], transitions, samples);
+      console.log(w);
+    }
    }