UPDATE: I've just worked it out I think, its because I haven't got any debounce in there so every 'tap' could be jumping a couple of modes instead of seeing it as 1 button tap & jumping 1 mode.

Where do I actually add the debounce though? I couldn't add it into the sub modes as it would wreck the routine timing wouldn't it?