diff --git a/helix-core/src/match_brackets.rs b/helix-core/src/match_brackets.rs
index 0e08c489..5351b56d 100644
--- a/helix-core/src/match_brackets.rs
+++ b/helix-core/src/match_brackets.rs
@@ -87,13 +87,13 @@ fn find_pair(
                 (as_char(doc, &open), as_char(doc, &close))
             {
                 if PAIRS.contains(&(open, close)) {
-                    if start_pos == pos_ {
+                    if end_pos == pos_ {
                         return Some(start_pos);
                     }
 
                     // We return the end char if the cursor is either on the start char
                     // or at some arbitrary position between start and end char.
-                    if traverse_parents || end_pos == pos_ {
+                    if traverse_parents || start_pos == pos_ {
                         return Some(end_pos);
                     }
                 }
diff --git a/helix-term/tests/test/commands/movement.rs b/helix-term/tests/test/commands/movement.rs
index ed698428..5868fa49 100644
--- a/helix-term/tests/test/commands/movement.rs
+++ b/helix-term/tests/test/commands/movement.rs
@@ -895,6 +895,22 @@ async fn match_bracket() -> anyhow::Result<()> {
                 }
             "##},
         ),
+        // named node with 2 or more children
+        (
+            indoc! {r##"
+                use a::#[{|]#
+                    b::{c, d, e, f, g},
+                    h, i, j, k, l, m, n,
+                };
+            "##},
+            "mm",
+            indoc! {r##"
+                use a::{
+                    b::{c, d, e, f, g},
+                    h, i, j, k, l, m, n,
+                #[}|]#;
+            "##},
+        ),
     ];
 
     let python_tests = vec![