diff --git a/thermal_checks.py b/thermal_checks.py
index d0080faeb868456c9569f9996c8537fefc80234b..ce87a353b6d70e77770ef9de5a37f7967aeaa305 100644
--- a/thermal_checks.py
+++ b/thermal_checks.py
@@ -1,7 +1,26 @@
 from util import BaseCheckList
+import sklearn.covariance
+import scipy.stats
+import numpy as np
 
 def thermal_correlation_check(frame, parameters):
     return frame
 
+def hbb_covariance_check(frame, parameters):
+    hbbb_mean = parameters.get('HBBbottomTemp_mean', 333.101)
+    hbbt_mean = parameters.get('HBBtopTemp_mean', 332.993)
+    hbba_mean = parameters.get('HBBapexTemp_mean', 332.818)
+
+    hbb_contamination = parameters.get('hbb_contamination', .01)
+    envelope = sklearn.covariance.EllipticEnvelope(store_precision=False, contamination=hbb_contamination)
+    envelope.location_ = np.array([hbbb_mean, hbbt_mean, hbba_mean])
+    envelope.covariance_ = np.array([[ 0.0179306 ,  0.0164418 ,  0.01817402],
+                                     [ 0.0164418 ,  0.01898899,  0.02326341],
+                                     [ 0.01817402,  0.02326341,  0.02968953]])
+    distances = envelope.mahalanobis(frame[['HBBbottomTemp','HBBtopTemp','HBBapexTemp']]) ** .5
+    frame['hbb_covariance_check'] = (distances > 6) * 1
+    return frame
+    
+
 class CheckList(BaseCheckList):
-    checks = [ thermal_correlation_check ]
+    checks = [ thermal_correlation_check , hbb_covariance_check]