diff --git a/src/winio.c b/src/winio.c
index 27edf92d7310ab398727b4f01ad8c9d6495752ba..d0763d0027c43a7acca27b9ef893baa4b9230dad 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -668,13 +668,10 @@ int convert_sequence(const int *seq, size_t seq_len)
 	    case 'O':
 		switch (seq[1]) {
 		    case '1':
-			if (seq_len >= 3) {
-			    switch (seq[2]) {
-				case ';':
-    if (seq_len >= 4) {
+			if (seq_len > 4  && seq[2] == ';') {
+
 	switch (seq[3]) {
 	    case '2':
-		if (seq_len >= 5) {
 		    switch (seq[4]) {
 			case 'A': /* Esc O 1 ; 2 A == Shift-Up on
 				   * Terminal. */
@@ -694,10 +691,8 @@ int convert_sequence(const int *seq, size_t seq_len)
 			case 'S': /* Esc O 1 ; 2 S == F16 on Terminal. */
 			    return KEY_F(16);
 		    }
-		}
 		break;
 	    case '5':
-		if (seq_len >= 5) {
 		    switch (seq[4]) {
 			case 'A': /* Esc O 1 ; 5 A == Ctrl-Up on Terminal. */
 			    return CONTROL_UP;
@@ -708,12 +703,9 @@ int convert_sequence(const int *seq, size_t seq_len)
 			case 'D': /* Esc O 1 ; 5 D == Ctrl-Left on Terminal. */
 			    return CONTROL_LEFT;
 		    }
-		}
 		break;
 	}
-    }
-				    break;
-			    }
+
 			}
 			break;
 		    case '2':