diff --git a/modules/base/pymod/table.py b/modules/base/pymod/table.py
index 6541cf721579f77ce232d17442bed36193efdcae..284c0419ff0aadc8cc86cf64828698811829cc9b 100644
--- a/modules/base/pymod/table.py
+++ b/modules/base/pymod/table.py
@@ -1678,7 +1678,21 @@ class Table(object):
           else:
             fp += 1
 
-    mcc = ((tp*tn)-(fp*fn)) / math.sqrt((tp+fn)*(tp+fp)*(tn+fn)*(tn+fp))
+    mcc = None
+    msg = None
+    if (tp+fn)==0:
+      msg = 'factor (tp + fn) is zero'
+    elif (tp+fp)==0:
+      msg = 'factor (tp + fp) is zero'
+    elif (tn+fn)==0:
+      msg = 'factor (tn + fn) is zero'
+    elif (tn+fp)==0:
+      msg = 'factor (tn + fp) is zero'
+    
+    if msg:
+      LogWarning("Could not compute MCC: MCC is not defined since %s"%msg)
+    else:
+      mcc = ((tp*tn)-(fp*fn)) / math.sqrt((tp+fn)*(tp+fp)*(tn+fn)*(tn+fp))
     return mcc
     
 
diff --git a/modules/base/tests/test_table.py b/modules/base/tests/test_table.py
index 265a661861be6887560507de95c0675c19c77023..3edf226be0acae3acf79ce89e909cad4bbbeaaab 100644
--- a/modules/base/tests/test_table.py
+++ b/modules/base/tests/test_table.py
@@ -1143,11 +1143,12 @@ class TestTable(unittest.TestCase):
     self.assertAlmostEquals(auc, auc_ref)
 
   def testCalcMCC(self):
-    tab = Table(['score', 'rmsd', 'class_rmsd', 'class_score'], 'ffbb',
+    tab = Table(['score', 'rmsd', 'class_rmsd', 'class_score', 'class_wrong'], 'ffbbb',
                 score=      [2.64, 1.11, 2.17, 0.45,0.15,0.85, 1.13, 2.90, 0.50, 1.03, 1.46, 2.83, 1.15, 2.04, 0.67, 1.27, 2.22, 1.90, 0.68, 0.36,1.04, 2.46, 0.91,0.60],
                 rmsd=[9.58,1.61,7.48,0.29,1.68,3.52,3.34,8.17,4.31,2.85,6.28,8.78,0.41,6.29,4.89,7.30,4.26,3.51,3.38,0.04,2.21,0.24,7.58,8.40],
                 class_rmsd= [False,True, False,True,True,False,False,False,False,False,False,False,True, False,False,False,False,False,False,True,False,True,False,False],
-                class_score=[False,False,False,True,True,True, False,False,True, False,False,False,False,False,True, False,False,False,True, True,False,False,True,True])
+                class_score=[False,False,False,True,True,True, False,False,True, False,False,False,False,False,True, False,False,False,True, True,False,False,True,True],
+                class_wrong=[False,False,False,False,False,False, False,False,False, False,False,False,False,False,False, False,False,False,False, False,False,False,False,False])
     
     mcc = tab.ComputeMCC(score_col='score', score_dir='-', class_col='rmsd', class_dir='-', score_cutoff=1.0, class_cutoff=2.0)
     self.assertAlmostEquals(mcc, 0.1490711984)
@@ -1159,6 +1160,9 @@ class TestTable(unittest.TestCase):
     self.assertAlmostEquals(mcc, -0.1490711984)
     mcc = tab.ComputeMCC(score_col='score', score_dir='+', class_col='rmsd', class_dir='-', score_cutoff=1.0, class_cutoff=2.0)
     self.assertAlmostEquals(mcc, -0.1490711984)
+    mcc = tab.ComputeMCC(score_col='class_wrong', class_col='class_rmsd')
+    self.assertEquals(mcc,None)
+    
 
   def testCalcMCCPreclassified(self):
     tab = Table(['reference', 'prediction1', 'prediction2'],'bbb',