diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index adc6217c92bf7efb17ec453b7d7434781f0582c6..3f933df3f78a3413487e26fede6ba15b61b936de 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -9394,20 +9394,19 @@ static int start_pri(struct zt_pri *pri)
 
 static char *complete_span_helper(const char *line, const char *word, int pos, int state, int rpos)
 {
-	int span=1;
-	char tmp[50];
+	int which, span;
+	char *ret = NULL;
+
 	if (pos != rpos)
-		return 0;
-	while(span <= NUM_SPANS) {
-		if (span > state && pris[span-1].pri)
+		return ret;
+
+	for (which = span = 0; span < NUM_SPANS; span++) {
+		if (pris[span].pri && ++which > state) {
+			asprintf(&ret, "%d", span + 1);	/* user indexes start from 1 */
 			break;
-		span++;
+		}
 	}
-	if (span <= NUM_SPANS) {
-		snprintf(tmp, sizeof(tmp), "%d", span);
-		return ast_strdup(tmp);
-	} else
-		return NULL;
+	return ret;
 }
 
 static char *complete_span_4(const char *line, const char *word, int pos, int state)