diff --git a/modules/mol/alg/pymod/superpose.py b/modules/mol/alg/pymod/superpose.py
index 4f1ac1e0ac315ae8d430292634082dd568c2a503..3f756c2a04e03e7b9c651badd013ddc755053dcc 100644
--- a/modules/mol/alg/pymod/superpose.py
+++ b/modules/mol/alg/pymod/superpose.py
@@ -202,16 +202,29 @@ def _MatchResidueByAln(ent_a, ent_b, atoms, alnmethod):
     seq_b = ost.seq.CreateSequence(chain_b.name, s_b)
     aln_a_b = alnmethod(seq_a, seq_b, ost.seq.alg.BLOSUM62)
     ## evaluate alignment
-    for aln in aln_a_b:
-      ## bind chain to alignment
-      aln.AttachView(0, chain_a.Select('protein=True'))
-      aln.AttachView(1, chain_b.Select('protein=True'))
-      ## select residues (only replacement edges)
+    max_aln_res = 0
+    for a in range(0, len(aln_a_b)):
+      aln = aln_a_b[a]
+      aln_res_len = 0
+      match_list = list()
       for i in range(0, aln.GetLength()):
         if aln.sequences[0][i]!='-' and aln.sequences[1][i]!='-':
-          r_a = aln.GetResidue(0,i)
-          r_b = aln.GetResidue(1,i)
-          result_a,result_b=_fetch_atoms(r_a, r_b, result_a, result_b, atmset)
+          aln_res_len += 1
+          match_list.append(i)
+      if aln_res_len > max_aln_res:
+        max_aln_res = aln_res_len
+        max_aln_idx = a
+        max_matches = match_list
+
+    aln = aln_a_b[max_aln_idx]
+    ## bind chain to alignment
+    aln.AttachView(0, chain_a.Select('protein=True'))
+    aln.AttachView(1, chain_b.Select('protein=True'))
+    ## select residues (only replacement edges)
+    for i in max_matches:
+      r_a = aln.GetResidue(0,i)
+      r_b = aln.GetResidue(1,i)
+      result_a,result_b=_fetch_atoms(r_a, r_b, result_a, result_b, atmset)
   result_a.AddAllInclusiveBonds()
   result_b.AddAllInclusiveBonds()
   return result_a, result_b