diff --git a/aegisub/automation/autoload/select-overlaps.lua b/aegisub/automation/autoload/select-overlaps.lua
index 35bb38bcea81277f92faff2a395c185efe870352..f5905c933fa19e529e219399c20e30ba66bdc2fe 100644
--- a/aegisub/automation/autoload/select-overlaps.lua
+++ b/aegisub/automation/autoload/select-overlaps.lua
@@ -27,11 +27,13 @@ function select_overlaps(subs)
     for i = 1,#subs do
         local line = subs[i]
         if line.class == "dialogue" then
-            line.i = i - 1
+            line.i = i
             table.insert(dialogue, line)
         end
     end
-    table.sort(dialogue, function(a,b) return a.start_time < b.start_time end)
+    table.sort(dialogue, function(a,b)
+        return a.start_time < b.start_time or (a.start_time == b.start_time and a.i < b.i)
+    end)
 
     local end_time = 0
     local overlaps = {}