diff --git a/pbx.c b/pbx.c
index b355abe0441fffb0da9e13261b8fedf2ada55353..197175c1ed3f5032f102a038f823a21fb9c698f2 100644
--- a/pbx.c
+++ b/pbx.c
@@ -3728,10 +3728,14 @@ static unsigned get_range(char *src, int max, char *const names[], const char *m
 	}
 	/* Fill the mask. Remember that ranges are cyclic */
 	mask = 1 << e;	/* initialize with last element */
-	for ( ; s != e; s++) {
-		if (s == max)
-			s = 0 ;
-		mask |= (1 << s);
+	while (s != e) {
+		if (s >= max) {
+			s = 0;
+			mask |= (1 << s);
+		} else {
+			mask |= (1 << s);
+			s++;
+		}
 	}
 	return mask;
 }