diff --git a/nerval/evaluate.py b/nerval/evaluate.py
index 97fe7754c5918b7e9dfb64cca5467070e350636a..7c39ab760137b7b0a42a6f8570592f77a112d421 100644
--- a/nerval/evaluate.py
+++ b/nerval/evaluate.py
@@ -273,7 +273,17 @@ def compute_matches(
                         and j not in visited_predict
                     ):
                         j -= 1
-                    current_compar += prediction[j + 1 : i]
+
+                    if (
+                        "B" in labels_predict[j]
+                        and get_type_label(labels_predict[j]) == tag_ref
+                        and j not in visited_predict
+                    ):
+                        start = j
+                    else:
+                        start = j + 1
+
+                    current_compar += prediction[start:i]
 
                 found_aligned_beginning = True
                 current_compar.append(prediction[i])
diff --git a/tests/test_compute_matches.py b/tests/test_compute_matches.py
index 8d5d28a504418cf0b833a230f4a15aed670fe466..27910a7c194fb74931faa5b9b109465281ab6f53 100644
--- a/tests/test_compute_matches.py
+++ b/tests/test_compute_matches.py
@@ -143,6 +143,78 @@ expected_matches = {"All": 1, "PER": 1, "LOC": 0, "DAT": 0}
 expected_matches_nested_perfect = {"All": 3, "PER": 1, "LOC": 2}
 expected_matches_nested_false = {"All": 2, "PER": 1, "LOC": 1}
 
+fake_annot_backtrack_boundary = "The red dragon"
+
+fake_annot_tags_bk_boundary = [
+    "O",
+    "O",
+    "O",
+    "O",
+    "B-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+]
+
+fake_predict_tags_bk_boundary = [
+    "B-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+]
+
+expected_matches_bk_boundary = {"All": 0, "PER": 0}
+
+fake_annot_backtrack_boundary_2 = "A red dragon"
+
+fake_annot_tags_bk_boundary_2 = [
+    "O",
+    "O",
+    "B-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+]
+
+fake_predict_tags_bk_boundary_2 = [
+    "B-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+    "I-PER",
+]
+
+expected_matches_bk_boundary_2 = {"All": 1, "PER": 1}
+
 
 @pytest.mark.parametrize(
     "test_input, expected",
@@ -174,6 +246,24 @@ expected_matches_nested_false = {"All": 2, "PER": 1, "LOC": 1}
             ),
             expected_matches_nested_false,
         ),
+        (
+            (
+                fake_annot_backtrack_boundary,
+                fake_annot_backtrack_boundary,
+                fake_annot_tags_bk_boundary,
+                fake_predict_tags_bk_boundary,
+            ),
+            expected_matches_bk_boundary,
+        ),
+        (
+            (
+                fake_annot_backtrack_boundary_2,
+                fake_annot_backtrack_boundary_2,
+                fake_annot_tags_bk_boundary_2,
+                fake_predict_tags_bk_boundary_2,
+            ),
+            expected_matches_bk_boundary_2,
+        ),
     ],
 )
 def test_compute_matches(test_input, expected):