Q:

Algorithm or function for navigating around a clock face or compass (or any other circle)?

I'm looking for a nice elegant way of navigating around discrete increments of a circle. 
So imagine giving a hand on a clock an instruction to move clockwise or anti-clockwise one increment. Starting at 1 and moving clockwise this is easy - just add one. But when you reach 12 and add one, the algorithm needs to reset back to 1, rather than 13. Similarly, going the otherway - when you move anti-clockwise from 1, the algorithm should move you to 12, rather than zero.
My initial idea is to use modulo, so imagine 12 increments, the function might be:
new_position = ((curr_position + 12) + increment) % 12 
But this clearly doesn't handle the transition from 12->1 or from 12<-1.
I'm sure there's a nice way to do this... 

A:

Part of the problem is that you're thinking 12:00 == 12.  This becomes easier when you realize 12:00 == 0.

