--- main.c.orig 2010-02-21 22:45:08.000000000 +0100
+++ main.c      2010-02-21 22:47:38.000000000 +0100
@@ -172,13 +172,13 @@
 // ---- logical snake
 // -- snake utils
 uint8_t GetSnakePiece(uint8_t idx) {  // get direction of a snake's piece
-  idx = (idx + snakeTailIdx) % SNAKE_MAX_LEN;
+  idx = (uint8_t)(idx + snakeTailIdx) % SNAKE_MAX_LEN;
   return (  ( (snake[idx / 4]) >> (2 * (idx % 4)) ) & 0x03  );
 }

 void SetSnakePiece(uint8_t idx, uint8_t dir) {  // store direction of a snake's piece
   dir &= 0x03;
-  idx = (idx + snakeTailIdx) % SNAKE_MAX_LEN;
+  idx = (uint8_t)(idx + snakeTailIdx) % SNAKE_MAX_LEN;
   snake[idx / 4] = (snake[idx / 4] & (~(0x03 << (2 * (idx % 4))))) | (dir << (2 * (idx % 4)));
 }

@@ -360,7 +360,7 @@
     tmpPos.all = snakeTailPos.all;
     SnakeMove(&snakeTailPos);      // we don't need to check for result, as tail is guaranteed free movement towards body ;-)
     snakeLen--;
-    snakeTailIdx = (snakeTailIdx + 1) % SNAKE_MAX_LEN;
+    snakeTailIdx = (uint8_t)(snakeTailIdx + 1) % SNAKE_MAX_LEN;
     if (MoveTail(&tmpPos)) return true;  // this is the normal course of things: we ate one piece of tail and then break to continue;
   }
 }
