diff --git a/src/main/java/org/opennars/lab/metric/MetricReporter.java b/src/main/java/org/opennars/lab/metric/MetricReporter.java
index 636b7aa6a1f81580718242879ef5fc1487860f5e..f0adb19c211a12e4ea32e8e91b0bae9b7a5c2a4b 100644
--- a/src/main/java/org/opennars/lab/metric/MetricReporter.java
+++ b/src/main/java/org/opennars/lab/metric/MetricReporter.java
@@ -23,6 +23,10 @@ public class MetricReporter {
         for(final MetricSensor iSensor : sensors) {
             send(iSensor.getValueAsString(), iSensor.getName());
         }
+
+        for(final MetricSensor iSensor : sensors) {
+            iSensor.resetAfterSending();
+        }
     }
 
     private void send(final String dataAsString, final String metricPathName) {
diff --git a/src/main/java/org/opennars/lab/metric/MetricSensor.java b/src/main/java/org/opennars/lab/metric/MetricSensor.java
index 6e47af3c4e2be5e42de2ebd5d62441803e0d95b9..2daf7d339a3d470f0f67ddeb0ef1255eb6120855 100644
--- a/src/main/java/org/opennars/lab/metric/MetricSensor.java
+++ b/src/main/java/org/opennars/lab/metric/MetricSensor.java
@@ -4,4 +4,9 @@ public interface MetricSensor {
     String getName();
 
     String getValueAsString();
+
+    /**
+     * is called to give the sensor a chance to reset the stat after sending
+     */
+    void resetAfterSending();
 }
diff --git a/src/main/java/org/opennars/lab/microworld/Pong.java b/src/main/java/org/opennars/lab/microworld/Pong.java
index d4f7fe113867aceb0732a372485f0c1d0b31c037..7c97f2e7552ca7dc388fe81ab6522b96e125bd26 100755
--- a/src/main/java/org/opennars/lab/microworld/Pong.java
+++ b/src/main/java/org/opennars/lab/microworld/Pong.java
@@ -61,6 +61,8 @@ public class Pong extends Frame {
         metricReporter.connect("127.0.0.1", 1212);
 
         metricReporter.sensors.add(new MetricSensor() {
+            private int oldBallHits = 0;
+
             @Override
             public String getName() {
                 return "ballHits";
@@ -68,11 +70,18 @@ public class Pong extends Frame {
 
             @Override
             public String getValueAsString() {
-                return "" + ballHits;
+                return "" + (ballHits-oldBallHits);
+            }
+
+            @Override
+            public void resetAfterSending() {
+                oldBallHits = ballHits;
             }
         });
 
         metricReporter.sensors.add(new MetricSensor() {
+            private int oldBallMisses = 0;
+
             @Override
             public String getName() {
                 return "ballMisses";
@@ -80,7 +89,12 @@ public class Pong extends Frame {
 
             @Override
             public String getValueAsString() {
-                return "" + ballMisses;
+                return "" + (ballMisses-oldBallMisses);
+            }
+
+            @Override
+            public void resetAfterSending() {
+                oldBallMisses = ballMisses;
             }
         });
 
diff --git a/src/main/java/org/opennars/lab/microworld/SimNAR.java b/src/main/java/org/opennars/lab/microworld/SimNAR.java
index f59530ce769bee80813bfdd114e92fdfd2d51763..168787307d5b47a2177e8e3c45bb6e24ac6e169a 100755
--- a/src/main/java/org/opennars/lab/microworld/SimNAR.java
+++ b/src/main/java/org/opennars/lab/microworld/SimNAR.java
@@ -60,6 +60,10 @@ public class SimNAR extends Frame {
             public String getValueAsString() {
                 return "" + counterAteGood;
             }
+
+            @Override
+            public void resetAfterSending() {
+            }
         });
 
         metricReporter.sensors.add(new MetricSensor() {
@@ -72,6 +76,10 @@ public class SimNAR extends Frame {
             public String getValueAsString() {
                 return "" + counterAteBad;
             }
+
+            @Override
+            public void resetAfterSending() {
+            }
         });
 
         String[] args = {"Microworld"};