--- gdm/daemon/gdm-display.c.orig	2009-10-22 17:51:54.000000000 +0900
+++ gdm/daemon/gdm-display.c	2009-11-26 15:25:23.000000000 +0900
@@ -346,7 +346,7 @@ gdm_display_real_get_timed_login_details
         delay = 0;
         res = gdm_settings_direct_get_int (GDM_KEY_TIMED_LOGIN_DELAY, &delay);
 
-        if (delay <= 0) {
+        if (delay == 0) {
                 /* we don't allow the timed login to have a zero delay */
                 delay = 10;
         }
--- gdm/daemon/gdm-simple-slave.c.orig	2009-11-26 15:18:29.000000000 +0900
+++ gdm/daemon/gdm-simple-slave.c	2009-11-26 15:25:23.000000000 +0900
@@ -1023,7 +1023,7 @@ idle_connect_to_display (GdmSimpleSlave 
                 delay = 0;
                 enabled = FALSE;
                 gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, NULL, &delay);
-                if (! enabled || delay > 0) {
+                if (! enabled || delay != 0) {
                         start_greeter (slave);
                         create_new_session (slave);
                 } else {
--- gdm/gui/simple-greeter/gdm-greeter-login-window.c.orig	2009-10-28 10:51:19.000000000 +0900
+++ gdm/gui/simple-greeter/gdm-greeter-login-window.c	2009-11-26 15:25:23.000000000 +0900
@@ -298,7 +298,8 @@ restart_timed_login_timeout (GdmGreeterL
 {
         remove_timed_login_timeout (login_window);
 
-        if (login_window->priv->timed_login_enabled) {
+        if (login_window->priv->timed_login_enabled &&
+            login_window->priv->timed_login_delay != UINT_MAX) {
                 g_debug ("GdmGreeterLoginWindow: adding timed login timer");
                 watch_for_user_interaction (login_window);
                 login_window->priv->timed_login_timeout_id = g_timeout_add_seconds (login_window->priv->timed_login_delay,
@@ -645,7 +646,12 @@ gdm_greeter_login_window_request_timed_l
                 timed_login_already_enabled = FALSE;
         }
         login_window->priv->timed_login_username = g_strdup (username);
-        login_window->priv->timed_login_delay = delay;
+
+        if (delay == -1) {
+                login_window->priv->timed_login_delay = UINT_MAX;
+        } else {
+                login_window->priv->timed_login_delay = delay;
+        }
 
         if (login_window->priv->dialog_mode != MODE_SELECTION) {
                 reset_dialog (login_window);
