diff --git a/modules/mol/alg/pymod/lddt.py b/modules/mol/alg/pymod/lddt.py
index 26cee9b9b4f6744f3f8171d387d81cbc49f9b2c0..4c7bae88b343666cefc133f4c0730c73371de5f5 100644
--- a/modules/mol/alg/pymod/lddt.py
+++ b/modules/mol/alg/pymod/lddt.py
@@ -724,7 +724,7 @@ class lDDTScorer:
                               self._sym_ref_distances)
 
     def _SetupDistancesSC(self):
-        """Same as above but on a single chain basis => not interchain contacts
+        """Select subset of contacts only covering intra-chain contacts
         """
         # init
         self._ref_indices_sc = [[] for idx in range(self.n_atoms)]
@@ -732,54 +732,25 @@ class lDDTScorer:
         self._sym_ref_indices_sc = [[] for idx in range(self.n_atoms)]
         self._sym_ref_distances_sc = [[] for idx in range(self.n_atoms)]
 
-        # initialize positions with values far in nirvana. If a position is not
-        # set, it should be far away from any position in target (or at least
-        # more than inclusion_radius).
-        max_pos = self.target.bounds.GetMax()
-        max_coordinate = max(max_pos[0], max_pos[1], max_pos[2])
-        max_coordinate += 2 * self.inclusion_radius
+        # start from overall contacts
+        ref_indices = self.ref_indices
+        ref_distances = self.ref_distances
+        sym_ref_indices = self.sym_ref_indices
+        sym_ref_distances = self.sym_ref_distances
 
-        # same as above but chain-wise
-        r_idx = 0
-        n_chains = len(self.target.chains)
+        n_chains = len(self.chain_start_indices)
         for ch_idx, ch in enumerate(self.target.chains):
-            chain_start_idx = self.chain_start_indices[ch_idx]
-            chain_end_idx = self.n_atoms
+            chain_s = self.chain_start_indices[ch_idx]
+            chain_e = self.n_atoms
             if ch_idx + 1 < n_chains:
-                chain_end_idx = self.chain_start_indices[ch_idx+1]
-            n_chain_atoms = chain_end_idx - chain_start_idx
-            pos = np.ones((self.n_atoms, 3), dtype=np.float32) * max_coordinate
-            atom_indices = list()
-            mask_start = list()
-            mask_end = list()
-            for r in ch.residues:
-                r_start_idx = self.res_start_indices[r_idx]
-                r_start_idx -= chain_start_idx # map to chain reference
-                r_n_atoms = len(self.compound_anames[r.name])
-                r_end_idx = r_start_idx + r_n_atoms
-                for a in r.atoms:
-                    if a.handle.GetHashCode() in self.atom_indices:
-                        idx = self.atom_indices[a.handle.GetHashCode()]
-                        idx -= chain_start_idx # map to chain reference
-                        p = a.GetPos()
-                        pos[idx][0] = p[0]
-                        pos[idx][1] = p[1]
-                        pos[idx][2] = p[2]
-                        atom_indices.append(idx)
-                        mask_start.append(r_start_idx)
-                        mask_end.append(r_end_idx)
-                r_idx += 1
-
-            indices, distances = self._CloseStuff(pos,
-                                                  self.inclusion_radius,
-                                                  atom_indices, mask_start,
-                                                  mask_end)
-
-            for i in range(len(atom_indices)):
-                # map back to global reference
-                self._ref_indices_sc[atom_indices[i]+chain_start_idx] =\
-                [x+chain_start_idx for x in indices[i]]
-                self._ref_distances_sc[atom_indices[i]+chain_start_idx] = distances[i]
+                chain_e = self.chain_start_indices[ch_idx+1]
+            for i in range(chain_s, chain_e):
+                if len(ref_indices[i]) > 0:
+                    intra_idx = np.where(np.logical_and(ref_indices[i]>=chain_s,
+                                                  ref_indices[i]<chain_e))[0]
+                    self._ref_indices_sc[i] = ref_indices[i][intra_idx]
+                    self._ref_distances_sc[i] = ref_distances[i][intra_idx]
+
         self._NonSymDistances(self._ref_indices_sc, self._ref_distances_sc,
                               self._sym_ref_indices_sc,
                               self._sym_ref_distances_sc)