You may be running out of RAM, overwriting variables, etc. Usually gets reported here when large arrays are used.
There are some memory utilization things you can use to see how much is being used.
Thanks, I felt that it was likely to be something like that. There is not much in the way of variables, certainly not even 1K's worth I would guess.
There are 5 arrays with 16 entries each, 3 are unsigned int and 2 are "char* NAME" with entries that are 8 characters long each.
There are several long ints, ints and boolean variables and a few local variables but thats it.
The sketch includes: WProgram.h, Button.h, TicksPerSecond.h, RotaryEncoderAcelleration.h, EEPROM.h & LiquidCrystal.h
The actual program is not that long or complicated.
IMPORTANT NEW INFO.....
I originally built the device as a shield which attached to a genuine Arduino 328p reference board.
Next I took the standard setup as per the bread board like here : http://www.arduino.cc/en/Main/Standalone
and added my shield making it all on one PCB.
It worked faultlessly until this happened !
If I upload the same sketch to an arduino reference 328p board with my original shield attached (so it should be effectively the same thing) then it works exactly the same BUT it continues to work even with the debug stuff.
The debug stuff is just basically lots of stuff like this:
Serial.println(""); Serial.println("-------------- Entering the inner loop --------------"); Serial.println("");
Serial.print("Number if times left = "); Serial.println(count);
So I can watch what is happening using the computer.