Ещё немного модифицировал и упростил код. Во время отладки добавил строку
set logging $u $d $l $r #i
Лог
13:33:33 3 (s_fish.txt): 0 0 0 1 1
13:33:33 3 (s_fish.txt): 0 1 0 0 2
13:33:33 3 (s_fish.txt): 0 1 0 0 3
13:33:33 3 (s_fish.txt): 0 0 1 0 4
13:33:33 3 (s_fish.txt): 0 0 1 0 5
13:33:33 3 (s_fish.txt): 0 0 0 1 6
13:33:33 3 (s_fish.txt): 0 0 0 1 7
13:33:39 3 (s_fish.txt): 0 0--- 0 1 1
13:33:39 3 (s_fish.txt): 1 0 0 0 2
13:33:39 3 (s_fish.txt): 0 0 1 0 3
13:33:39 3 (s_fish.txt): 1 0 0 0 4
13:33:39 3 (s_fish.txt): 0 0 0 1 5
13:33:39 3 (s_fish.txt): 0 1 0 0 6
13:33:39 3 (s_fish.txt): 1 0 0 0 7
13:33:45 3 (s_fish.txt): 0--- 1 0 0 1
13:33:45 3 (s_fish.txt): 1 0 0 0 2
13:33:45 3 (s_fish.txt): 0 0 0 1 3
13:33:45 3 (s_fish.txt): 0 0 0--- 1 4
13:33:45 3 (s_fish.txt): 1 0 0 0 5
13:33:45 3 (s_fish.txt): 0 1 0 0 6
13:33:45 3 (s_fish.txt): 0 0 1 0 7
когда появляются эти "минуса" прога работает не правильно, а значит это присутствует в значении переменной. Ранее в таком случае выходило из цикла проверки цвета.