diff --git a/modules/mol/alg/src/distance_rmsd_test.cc b/modules/mol/alg/src/distance_rmsd_test.cc
index 6bb500e36eb34a398272141a229807dfa81b3150..95d09e0620636bb62b9c0e902a87165ddb0f38c5 100644
--- a/modules/mol/alg/src/distance_rmsd_test.cc
+++ b/modules/mol/alg/src/distance_rmsd_test.cc
@@ -129,8 +129,17 @@ void fill_values(const GlobalRDMap& glob_dist_list,
     rnum_one = i->first;
     res_positions_one = positions.find(rnum_one);
     if(res_positions_one == positions.end()){
-      //this residue is missing, so we give it the full penalty
-      drmsd_values[rnum_one] = std::make_pair(i->second.size()*squared_cap_distance,i->second.size());
+      // this residue is missing, count how many interactions there are
+      // towards residues that fulfill sequence separation threshold
+      int n = 0;
+      for(ResidueRDMap::const_iterator j = i->second.begin(); j != i->second.end(); ++j){
+        //check sequence separation
+        rnum_two = j->first.second.GetResNum();
+        if(std::abs(rnum_one.GetNum() - rnum_two.GetNum()) > sequence_separation){
+          ++n;
+        }
+      }
+      drmsd_values[rnum_one] = std::make_pair(n*squared_cap_distance,n);
       continue;
     }