diff --git a/modules/mol/alg/pymod/contact_score.py b/modules/mol/alg/pymod/contact_score.py
index 256ff4d8faf390442843cc3a722cf605f238e907..802a2e7c12fda20a5007319ede265d2f208d739f 100644
--- a/modules/mol/alg/pymod/contact_score.py
+++ b/modules/mol/alg/pymod/contact_score.py
@@ -226,12 +226,8 @@ class ContactEntity:
                                                           hr2.strip("\u0000")))
 
     def _SetupInterfaceResidues(self):
-        self._interface_residues = dict()
+        self._interface_residues = {cname: set() for cname in self.chain_names}
         for k,v in self.contacts.items():
-            if k[0] not in self._interface_residues:
-                self._interface_residues[k[0]] = set()
-            if k[1] not in self._interface_residues:
-                self._interface_residues[k[1]] = set()
             for item in v:
                 self._interface_residues[k[0]].add(item[0])
                 self._interface_residues[k[1]].add(item[1])
@@ -278,7 +274,10 @@ class ContactScorerResultICS:
 
         :type: :class:`int`
         """
-        return self._n_intersection / self._n_mdl_contacts
+        if self._n_mdl_contacts != 0:
+            return self._n_intersection / self._n_mdl_contacts
+        else:
+            return 0.0
 
     @property
     def recall(self):
@@ -288,7 +287,10 @@ class ContactScorerResultICS:
 
         :type: :class:`int`
         """
-        return self._n_intersection / self._n_trg_contacts
+        if self._n_trg_contacts != 0:
+            return self._n_intersection / self._n_trg_contacts
+        else:
+            return 0.0
 
     @property
     def ics(self):
@@ -300,7 +302,12 @@ class ContactScorerResultICS:
         """
         p = self.precision
         r = self.recall
-        return 2*p*r/(p+r)
+        nominator = p*r
+        denominator = p + r
+        if denominator != 0.0:
+            return 2*nominator/denominator
+        else:
+            return 0.0
 
 class ContactScorerResultIPS:
     """
@@ -337,7 +344,10 @@ class ContactScorerResultIPS:
 
         :type: :class:`int`
         """
-        return self._n_intersection / self._n_mdl_int_res
+        if self._n_mdl_int_res != 0:
+            return self._n_intersection / self._n_mdl_int_res
+        else:
+            return 0.0
 
     @property
     def recall(self):
@@ -348,7 +358,10 @@ class ContactScorerResultIPS:
 
         :type: :class:`int`
         """
-        return self._n_intersection / self._n_trg_int_res
+        if self._n_trg_int_res != 0:
+            return self._n_intersection / self._n_trg_int_res
+        else:
+            return 0.0
 
     @property
     def ips(self):