diff --git a/main/cli.c b/main/cli.c
index e2ddeb3c88aa2e8d235c7d80ae47416beb759bcb..7607793ae047e9ec58db7d352ad8868d68e5afee 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -387,7 +387,7 @@ static char * handle_showuptime(struct ast_cli_entry *e, int cmd, struct ast_cli
 
 	switch (cmd) {
         case CLI_INIT:
-		e->command = "core show uptime";
+		e->command = "core show uptime [seconds]";
 		e->usage =
 			"Usage: core show uptime [seconds]\n"
 			"       Shows Asterisk uptime information.\n"
@@ -395,12 +395,12 @@ static char * handle_showuptime(struct ast_cli_entry *e, int cmd, struct ast_cli
 		return NULL;
 
 	case CLI_GENERATE:
-		return (a->pos > e->args || a->n > 0) ? NULL : "seconds";
+		return NULL;
 	}
 	/* regular handler */
-	if (a->argc == e->args+1 && !strcasecmp(a->argv[e->args],"seconds"))
+	if (a->argc == e->args && !strcasecmp(a->argv[e->args-1],"seconds"))
 		printsec = 1;
-	else if (a->argc == e->args)
+	else if (a->argc == e->args-1)
 		printsec = 0;
 	else
 		return CLI_SHOWUSAGE;