diff --git a/mrdna/readers/segmentmodel_from_lists.py b/mrdna/readers/segmentmodel_from_lists.py
index 51b28772ed47a104207e91f9cdf8a89cbf041a78..96f610ae34f591f61d49e341ccbeb37e3a6c54ac 100644
--- a/mrdna/readers/segmentmodel_from_lists.py
+++ b/mrdna/readers/segmentmodel_from_lists.py
@@ -261,7 +261,18 @@ def model_from_basepair_stack_3prime(coordinate, basepair, stack, three_prime,
             raise ValueError("The 'orientation' array is not properly formatted")
 
     if stack is None:
-        stack = find_stacks(coordinate, orientation)
+        if orientation is not None:
+            stack = find_stacks(coordinate, orientation)
+        else:
+            ## Guess stacking based on 3' connectivity
+            stack = np.array(three_prime,dtype=np.int) # Assume nts on 3' ends are stacked
+            _stack_below = _three_prime_list_to_five_prime(stack)
+            _has_bp = (basepair >= 0)
+            _nostack = np.where( (stack == -1)*_has_bp )[0]
+            _has_stack_below = _stack_below[basepair[_nostack]] >= 0
+            _nostack2 = _nostack[_has_stack_below]
+            stack[_nostack2] = basepair[_stack_below[basepair[_nostack2]]]
+
     else:
         try:
             stack = np.array(stack,dtype=np.int)