diff --git a/preload/apps/spo2/__init__.py b/preload/apps/spo2/__init__.py
index cf565d8e01a92ffa1cf95099f847291cbdbae8fc..dbe9b83c4255e625ee290a4914fb0cb4de6f3188 100644
--- a/preload/apps/spo2/__init__.py
+++ b/preload/apps/spo2/__init__.py
@@ -23,6 +23,7 @@ class SPO2:
         self.last_sample = 0.0
         self.filtered_value = 0.0
         self.source = "Red"
+        self.average = 0
 
     def open(self):
         def callback(datasets):
@@ -45,7 +46,9 @@ class SPO2:
             while buttons.read(buttons.BOTTOM_RIGHT): pass
 
     def update_history(self, datasets):
+        alpha = 0.995
         for val in datasets:
+            """
             if self.source == "Red":
                 self.avg[self.avg_pos] = val.red
             else:
@@ -63,6 +66,17 @@ class SPO2:
             )
             self.last_sample = avg_data
             self.history.append(self.filtered_value)
+            """
+
+            #print("%d,%d" % (val.red, val.infrared))
+            if self.source == "Red":
+                d = val.red
+            else:
+                d = val.infrared
+
+            self.average = alpha * self.average + (1 - alpha) * d
+            d -= self.average
+            self.history.append(d)
 
         # trim old elements
         self.history = self.history[-self.HISTORY_MAX :]