diff --git a/fastlane/metadata/android/en-US/changelogs/24.txt b/fastlane/metadata/android/en-US/changelogs/24.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7454dff072f1545dfb562f15b2516bf45a9c96ec
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/24.txt
@@ -0,0 +1 @@
+Fix collision detection.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/24.txt b/fastlane/metadata/android/fr-FR/changelogs/24.txt
new file mode 100644
index 0000000000000000000000000000000000000000..17e735102127ad3fefa1a3c6fe3e5f04fda429bd
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/24.txt
@@ -0,0 +1 @@
+Correction sur détection de collision.
diff --git a/lib/models/activity/activity.dart b/lib/models/activity/activity.dart
index 51260bda26d26d153a7a0030799798709fe112ee..2861a1f4c5f3641ab189c23dd620ce8dbcf0f12e 100644
--- a/lib/models/activity/activity.dart
+++ b/lib/models/activity/activity.dart
@@ -1,3 +1,5 @@
+import 'dart:math';
+
 import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
 
 import 'package:snake/models/activity/board.dart';
@@ -158,8 +160,11 @@ class Activity {
       return false;
     }
 
+    // first snake cell to check (end of tail), after next move
+    final int start = max(1, snake.cells.length - snake.size);
+
     // check head is not looped on snake body
-    for (int i = 0; i < snake.cells.length - 1; i++) {
+    for (int i = start; i < snake.cells.length - 1; i++) {
       if (head.col == snake.cells[i].col && head.row == snake.cells[i].row) {
         return false;
       }
diff --git a/pubspec.yaml b/pubspec.yaml
index 5cecc9b3779c396e10626409133eaab2319c16c6..674ab5f501b6e4f7a16095693b10d11d26e3d6ba 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: snake game
 
 publish_to: "none"
 
-version: 0.5.3+23
+version: 0.5.4+24
 
 environment:
   sdk: "^3.0.0"