diff --git a/test/tclock.c b/test/tclock.c
index 96e1d19..1a74962 100644
--- a/test/tclock.c
+++ b/test/tclock.c
@@ -1,22 +1,12 @@
-/* $Id: tclock.c,v 1.34 2014/08/02 16:37:03 tom Exp $ */
+/* $Id: tclock.c,v 1.48 2023/02/25 16:42:22 tom Exp $ */
 
+#define NEED_TIME_H
 #include <test.priv.h>
 
-#if HAVE_MATH_H
+#if HAVE_MATH_H && HAVE_MATH_FUNCS
 
 #include <math.h>
 
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
 /*
   tclock - analog/digital clock for curses.
   If it gives you joy, then
@@ -58,7 +48,7 @@
     MvAddCh(y, x, (chtype) col);
 }
 
-/* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */
+/* Draw a diagonal(arbitrary) line using Bresenham's algorithm. */
 static void
 dline(int pair, int from_x, int from_y, int x2, int y2, int ch)
 {
@@ -116,9 +106,35 @@
     }
 }
 
-int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+static void
+usage(int ok)
 {
+    static const char *msg[] =
+    {
+	"Usage: tclock [options]"
+	,""
+	,USAGE_COMMON
+	,"Options:"
+#if HAVE_USE_DEFAULT_COLORS
+	," -d       invoke use_default_colors"
+#endif
+    };
+    size_t n;
+
+    for (n = 0; n < SIZEOF(msg); n++)
+	fprintf(stderr, "%s\n", msg[n]);
+
+    ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
+
+int
+main(int argc, char *argv[])
+{
+    static TimeType initial;
+
     int i, cx, cy;
     double cr, mradius, hradius, mangle, hangle;
     double sangle, sradius, hours;
@@ -130,13 +146,31 @@
     bool odd = FALSE;
     time_t tim;
     struct tm *t;
-    char szChar[10];
+    char szChar[20];
     char *text;
     short my_bg = COLOR_BLACK;
-#if HAVE_GETTIMEOFDAY
-    struct timeval current;
+    TimeType current;
+#if HAVE_USE_DEFAULT_COLORS
+    bool d_option = FALSE;
 #endif
-    double fraction = 0.0;
+
+    while ((ch = getopt(argc, argv, OPTS_COMMON "d")) != -1) {
+	switch (ch) {
+#if HAVE_USE_DEFAULT_COLORS
+	case 'd':
+	    d_option = TRUE;
+	    break;
+#endif
+	case OPTS_VERSION:
+	    show_version(argv);
+	    ExitProgram(EXIT_SUCCESS);
+	default:
+	    usage(ch == OPTS_USAGE);
+	    /* NOTREACHED */
+	}
+    }
+    if (optind < argc)
+	usage(FALSE);
 
     setlocale(LC_ALL, "");
 
@@ -149,7 +183,7 @@
     if (has_colors()) {
 	start_color();
 #if HAVE_USE_DEFAULT_COLORS
-	if (use_default_colors() == OK)
+	if (d_option && (use_default_colors() == OK))
 	    my_bg = -1;
 #endif
 	init_pair(1, COLOR_RED, my_bg);
@@ -175,7 +209,7 @@
 	sangle = (i + 1) * (2.0 * PI) / 12.0;
 	sdx = A2X(sangle, sradius);
 	sdy = A2Y(sangle, sradius);
-	sprintf(szChar, "%d", i + 1);
+	_nc_SPRINTF(szChar, _nc_SLIMIT(sizeof(szChar)) "%d", i + 1);
 
 	MvAddStr(cy - sdy, cx + sdx, szChar);
     }
@@ -201,11 +235,9 @@
 	hdx = A2X(hangle, hradius);
 	hdy = A2Y(hangle, hradius);
 
-#if HAVE_GETTIMEOFDAY
-	gettimeofday(&current, 0);
-	fraction = ((double) current.tv_usec / 1.0e6);
-#endif
-	sangle = ((t->tm_sec + fraction) * (2.0 * PI) / 60.0);
+	GetClockTime(&current);
+
+	sangle = (ElapsedSeconds(&initial, &current) * (2.0 * PI) / 60.0);
 	sdx = A2X(sangle, sradius);
 	sdy = A2Y(sangle, sradius);
 
@@ -254,15 +286,14 @@
 
     }
 
-    curs_set(1);
-    endwin();
+    stop_curses();
     ExitProgram(EXIT_SUCCESS);
 }
 #else
 int
-main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+main(void)
 {
-    printf("This program requires the development header math.h\n");
+    printf("This program requires the header math.h and trignometric functions\n");
     ExitProgram(EXIT_FAILURE);
 }
 #endif
