Constructing hierarchical clock arithmetic using cyclic groups? So I know about cyclic groups and that they perform "clock arithmetic" in some sense. I.e. $C_{12}$ can be used to calculate how the hour pointer on a clock moves. But say I want to store the state of a clock to the second level?
I.e. one hour pointer, one minute pointer and one second pointer?
Separately we could just build one $C_{12}$ and two $C_{60}$ representations. But how do we make them interact with each other for each new minute and hour?

Own work:
Let $\bf C_{N}$ be matrix representing generating element for cyclic group with $N$ elements.
Let $\bf I_{N}$ be $N \times N$ identity matrix.
Let us define the generators to count up, $\bf G_H$ : hours, $\bf G_M$ : minutes, $\bf G_S$ : seconds.
$$\bf G_H = \bf \left[\begin{array}{lll}C_{12}&\bf 0&\bf 0\\\bf 0&\bf I_{60}&\bf 0\\\bf 0&\bf 0&\bf I_{60}\end{array}\right] \hspace{0.2cm} \bf G_M = \left[\begin{array}{lll}I_{12}&\bf 0&\bf 0\\\bf 0&\bf C_{60}&\bf 0\\\bf 0&\bf 0&\bf I_{60}\end{array}\right] \hspace{0.2cm} G_S = \left[\begin{array}{lll}\bf I_{12}&\bf 0&\bf 0\\\bf 0&\bf I_{60}&\bf 0\\\bf 0&\bf 0&\bf C_{60}\end{array}\right]$$
A column vector $\bf v$ carries the states. It is a ${\mathbb Z}_2$ vector with 1 for active and 0 for inactive. Now define exponents:
$e_m = {\bf v}_{(s=59)}$
$e_h = {\bf v}_{(s=59)} \cdot {\bf v}_{(m=59)}$
Now to count up our clock we iterate: $${\bf v} = {\bf G_H}^{e_h} {\bf G_M}^{e_m} {\bf G_S} \bf v$$
Then to get hour, minute, second as a column-vector, we can calculate (using matlab notation 0:N being row vector $[0,1,...,N]$ and $0_{m,n}$ is the $m \times n$ zero matrix) $$\left[\begin{array}{ccc} 0:11&0_{1,60}&0_{1,60}\\0_{1,12}&0:59&0_{1,60}\\0_{1,12}&0_{1,60}&0:59\end{array}\right]\bf v$$
I think this would work, but note that $e_h$ and $e_m$ needs to be recalculated from $\bf v$ each iteration. It would be more elegant if we could integrate this mechanism into a matrix somehow, but I have not managed to find a way to do this yet.
 A: One simple way is simply to have the direct sum of three groups $\mathbb{Z}/\mathbb{Z_{86400}} \oplus \mathbb{Z}/\mathbb{Z_{1440}} \oplus \mathbb{Z}/\mathbb{Z_{24}}$, and examine the element $1 \oplus 1 \oplus 1$.  This will generate a cyclic subgroup that at any point during the day will tell you total seconds, minutes and hours.
A: See A Cohomological Point of View of Elementary School Arithmetic we learn that a certain isomorphism is not true:
$$ \mathbb{Z}_{10} \oplus \mathbb{Z}_{10} \not \simeq \mathbb{Z}_{100} \text{ however } \mathbb{Z}_{4} \oplus \mathbb{Z}_{25} \simeq \mathbb{Z}_{100}$$
In the first example, $10 (x,y) = (0,0)$ for all $x,y \in \mathbb{Z}_{10}$.  In the second case $(1,1) \mapsto 1$ is an isomorphism.  The multiples begin:
$$ 
0 = (\color{red}{0},\color{blue}{0}) \; 
1 = (\color{red}{1},\color{blue}{1}) \;
2 = (\color{red}{2},\color{blue}{2}) \; 
3 = (\color{red}{3},\color{blue}{3}) \;
4 = (\color{red}{0},\color{blue}{4}) \; 
5 = (\color{red}{1},\color{blue}{5}) \;
\dots
99 = (\color{red}{3},\color{blue}{24}) \; 
100 = (\color{red}{0},\color{blue}{0}) \;
$$
So how to we implement carries in arithmetic.  We need a special rule, saying if the ones digit is bigger than 10 we do a carry.
$$ \begin{array}{clc}
  & 2^1 & 7\\
+ & 2 & 7\\ \hline
  & \color{#563F91}{5} & 4
 \end{array}  \text{ vs } 
\begin{array}{clc}
  & 2^0 & 7\\
+ & 2 & 7\\ \hline
  & \color{#EDA741}{4} & 4
 \end{array}
 \text{ or }
\begin{array}{clc}
  & 2^2 & 7\\
+ & 2 & 7\\ \hline
  & \color{#B26551}{6} & 4
 \end{array} 
$$
If we were to carry a $2$ instead of a $1$ in the ten's place the group is $\mathbb{Z}_5\oplus \mathbb{Z}_{20}$.
