diff --git a/mrdna/segmentmodel.py b/mrdna/segmentmodel.py
index 1fa1be218404cf8fa90f93e1150e328e523ee3f9..4101d4b1b05e3ad48b374bebf06db004fd656543 100644
--- a/mrdna/segmentmodel.py
+++ b/mrdna/segmentmodel.py
@@ -1875,6 +1875,7 @@ class SegmentModel(ArbdModel):
                 else:
                     b = s1._generate_one_bead(a1,0)
             A.particle = B.particle = b
+            b.is_intrahelical = True
             b.locations.extend([A,B])
 
         # pdb.set_trace()
@@ -1892,20 +1893,26 @@ class SegmentModel(ArbdModel):
 
             if A.particle is None:
                 b = s1.get_nearest_bead(a1)
-                if b is not None and s1.contour_to_nt_pos(np.abs(b.contour_position-a1)) < min(max_basepairs_per_bead, max_nucleotides_per_bead)*0.5:
+                try:
+                    bead_is_far = s1.contour_to_nt_pos(np.abs(b.contour_position-a1)) >= min(max_basepairs_per_bead, max_nucleotides_per_bead)*0.5
+                    if bead_is_far or "is_intrahelical" in b.__dict__:
+                        raise Exception("not close")
                     ## combine beads
                     b.update_position( 0.5*(b.contour_position + a1) ) # avg position
-                else:
+                except:
                     b = s1._generate_one_bead(a1,0)
                 A.particle = b
                 b.locations.append(A)
 
             if B.particle is None:
                 b = s2.get_nearest_bead(a2)
-                if b is not None and s2.contour_to_nt_pos(np.abs(b.contour_position-a2)) <  min(max_basepairs_per_bead, max_nucleotides_per_bead)*0.5:
+                try:
+                    bead_is_far = s2.contour_to_nt_pos(np.abs(b.contour_position-a2)) >= min(max_basepairs_per_bead, max_nucleotides_per_bead)*0.5
+                    if bead_is_far or "is_intrahelical" in b.__dict__:
+                        raise Exception("not close")
                     ## combine beads
                     b.update_position( 0.5*(b.contour_position + a2) ) # avg position
-                else:
+                except:
                     b = s2._generate_one_bead(a2,0)
                 B.particle = b
                 b.locations.append(B)