diff --git a/util.py b/util.py
index 136a619b9dd28829c8e0af147c6475106f1d7fec..14a2adaf65c7ae4df912d755e8bd23de82fdf36f 100644
--- a/util.py
+++ b/util.py
@@ -36,8 +36,9 @@ def update_variable_qc(frame, variable_qcs):
     return frame.drop('qc_notes', axis=1).combine(variable_qcs, proba_update, fill_value=0).combine_first(frame[['qc_notes']])
 
 def annotate_all(frame, mask, annotation):
-    for loc in frame.index[mask]:
-        annotate(frame, loc, annotation)
+    if len(mask) > 0:
+        for loc in frame.index[mask]:
+            annotate(frame, loc, annotation)
 
 def invalidate_records(frame, check_name):
     for index,percent in frame.ix[frame[check_name] > 0, check_name].iteritems():
@@ -122,6 +123,10 @@ class BaseCheckList:
         filtered_frame = frame.ix[frame.qc_percent < 1].copy()
         for check, metadata in self.checks.items():
             original_shape = filtered_frame.shape
-            filtered_frame = check(filtered_frame, self.parameters)
+            if len(filtered_frame) > 0:
+                filtered_frame = check(filtered_frame, self.parameters)
+            else:
+                for v in metadata['updates']:
+                    filtered_frame[v] = []
             assert np.in1d(list(metadata['updates']), filtered_frame.columns).all()
         return self.update_qc_percent(filtered_frame.combine_first(frame))