print on nearest PS printer:

%!PS-Adobe-3.0
%%Creator: Toby Thurston
%%Title: (Pages of pedagogical clocks)
%%CreationDate: (2014-02-14)
%%BoundingBox: 12 12 600 780
%%Pages: 1
%%EndComments
<< /PageSize [612 792] >> setpagedevice
%%BeginSetup
/clock {
/mins exch def
/hour exch def
/r exch def % radius
/cr r 100 div def
% draw the minute marks
12 { .5 setlinewidth 4 { 6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat
2 setlinewidth 6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat
% numbers
/fontsize r 0.14 mul def
/Helvetica findfont fontsize scalefont setfont
/s 2 string def
/rr r 0.9 mul def
1 1 12 { /n exch def /theta 90 30 n mul sub def
/st n s cvs def st stringwidth pop /dx exch 2 div neg def
rr theta cos mul rr theta sin mul moveto dx fontsize 3 div neg rmoveto st show
} for

% draw hands (unless hour is negative)
-1 hour lt {
gsave % hour hand first
90 60 hour mul mins add 2 div sub rotate
newpath
0 2 moveto
15 cr mul 3 cr mul 33 cr mul 0 cr mul 50 cr mul 3 cr mul curveto
55 cr mul 15 cr mul 60 cr mul 0 cr mul 76 cr mul 0 cr mul curveto
60 cr mul 0 cr mul 55 cr mul -15 cr mul 50 cr mul -3 cr mul curveto
33 cr mul 0 cr mul 15 cr mul -3 cr mul 0 cr mul -2 cr mul curveto
closepath 0 0 .677 setrgbcolor fill
grestore
gsave % minute hand on top
90 6 mins mul sub rotate
newpath
0 2 moveto
15 cr mul 3 cr mul 33 cr mul 0 50 cr mul 1 cr mul curveto
65 cr mul 3 cr mul 83 cr mul 0 97 cr mul 0 curveto
83 cr mul 0 65 cr mul -3 cr mul 50 cr mul -1 cr mul curveto
33 cr mul 0 15 cr mul -3 cr mul 0 -2 cr mul curveto
closepath .635 0 0 setrgbcolor fill
grestore
} if

% finally do central dot (to cover starts of hands) and outer band
.5 setlinewidth
0 0 moveto 0 0 r 20 div 0 360 arc fill
0 0 r 1.07 mul 0 360 arc stroke

} def

/emptyclock {
/r exch def % radius
/cr r 100 div def
% draw the minute marks
12 { .5 setlinewidth 4 { 6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat
2 setlinewidth 6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat
% numbers
/fontsize r 0.14 mul def
/Helvetica findfont fontsize scalefont setfont
/s 2 string def
/rr r 0.9 mul def
1 1 12 { /n exch def /theta 90 30 n mul sub def
/st n s cvs def st stringwidth pop /dx exch 2 div neg def
rr theta cos mul rr theta sin mul moveto dx fontsize 3 div neg rmoveto st show
} for

% finally do central dot (to cover starts of hands) and outer band
.5 setlinewidth
0 0 moveto 0 0 r 20 div 0 360 arc fill
0 0 r 1.07 mul 0 360 arc stroke

} def

%%EndSetup
%%Page: 1 1
%%BeginPageSetup
/pgsave save def
%%EndPageSetup
297 480 translate
120

(%Calendar%) /IODevice resourcestatus {
pop pop (%Calendar%) currentdevparams
dup /Running get { dup /Hour get exch /Minute get }{ 0 0 } ifelse } { -1 -1 } ifelse

clock
pgsave restore
showpage
%%Page: 2 2
%%BeginPageSetup
/pgsave save def
%%EndPageSetup
50 -55 translate
4 {
5 { 0 165 translate % a page of clocks for learners
50 rand 12 mod rand 60 mod clock
% line underneath
gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
} repeat
146 5 165 mul neg translate
} repeat
pgsave restore
showpage
%%Page: 3 3
%%BeginPageSetup
/pgsave save def
%%EndPageSetup
75 -55 translate
4 {
5 { 0 165 translate % whole multiple of five minutes only
45 rand 12 mod rand 12 mod 5 mul clock
gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
} repeat
146 5 165 mul neg translate
} repeat
pgsave restore
showpage
%%Page: 4 4
%%BeginPageSetup
/pgsave save def
%%EndPageSetup
75 -55 translate
4 {
5 { 0 165 translate % quarter hours only
45 rand 12 mod rand 4 mod 15 mul clock
gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
} repeat
146 5 165 mul neg translate
} repeat
pgsave restore
showpage

%%Page: 5 5
%%BeginPageSetup
/pgsave save def
%%EndPageSetup
75 -55 translate
4 {
5 { 0 165 translate % empty clocks
45 emptyclock
gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
} repeat
146 5 165 mul neg translate
} repeat
pgsave restore
showpage

%%Eof