diff -ru a/gnome-panel-2.28.0/applets/clock/clock.c b/gnome-panel-2.28.0/applets/clock/clock.c
--- a/gnome-panel-2.28.0/applets/clock/clock.c	2009-09-01 17:16:58.000000000 +0300
+++ b/gnome-panel-2.28.0/applets/clock/clock.c	2009-12-11 00:43:46.542113762 +0200
@@ -330,8 +330,13 @@
 		/* timeout of one minute if we don't care about the seconds */
  		if (cd->format != CLOCK_FORMAT_UNIX &&
 		    !cd->showseconds && 
-		    (!cd->set_time_window || !GTK_WIDGET_VISIBLE (cd->set_time_window)))
- 			timeouttime += 1000 * (59 - now % 60);
+			(!cd->set_time_window || !GTK_WIDGET_VISIBLE (cd->set_time_window))) {
+				const struct tm *tm = localtime(&now);
+				/* increase timeouttime only if it is needed */
+		    	if (tm != NULL && tm->tm_sec < 60) {
+	 				timeouttime += 1000 * (59 - tm->tm_sec);
+				}
+			}
  	}
 
 	cd->timeout = g_timeout_add (timeouttime,
