diff --git a/README.md b/README.md
index e1ddb80a3f5dffe1a85f5945d596123ef25fc0e5..8ce290ea8d012c20c2305414004a36bef794ed07 100644
--- a/README.md
+++ b/README.md
@@ -38,4 +38,21 @@ issues: snake order argument has white space in it
 
 ```
 Plugins > Macros > Run ... > ScanImageStitching.ijm
-```
\ No newline at end of file
+```
+
+## Snake Indexing
+
+### Grid: snake by rows
+* Right & Down
+* Left & Down
+* Right & Up
+* Left & Up
+
+
+### Even Grid
+
+* Z = odd -> {Right & Down}
+
+* Z = even && Grid = even -> {Right & Up}
+* Z = even && Grid = odd -> {Left & Up}
+
diff --git a/ScanImageStitching.ijm b/ScanImageStitching.ijm
index 4261ad6f331b0b40d6b11ded3c07bb8cc5c875cf..a5348cd3e0ae2f3478ed15807efbe30fad2e0b44 100644
--- a/ScanImageStitching.ijm
+++ b/ScanImageStitching.ijm
@@ -151,9 +151,15 @@ macro "ScanImageStitching"
     for (z = 1; z <= gridZ; z++) {
 
         // set order (this param contains empty space, not a typo!!!)
-        order="Right & Down                ";
-        if ((z % 2) == 0)
-            order="Right & Up";
+        // Z = even -> Right & Down
+        // Z = odd AND grid = even -> Right & Up
+        // Z = odd AND grid = odd -> Left & Up
+        order = "Right & Down                ";
+        if ((z % 2) == 0) {
+            order = "Left & Up";
+            if ((gridX % 2) == 0)
+                order = "Right & Up";
+        }
         
         // stitch
         for (s = 1; s <= countSlices; s++) {