diff --git a/src/evalwindow.c b/src/evalwindow.c
index 8b47b98..fde90f2 100644
--- a/src/evalwindow.c
+++ b/src/evalwindow.c
@@ -24,29 +24,29 @@
     if (argvars[0].v_type == VAR_UNKNOWN)
 	return curwin->w_id;
     winnr = tv_get_number(&argvars[0]);
-    if (winnr > 0)
+    if (winnr <= 0)
+	return 0;
+
+    if (argvars[1].v_type == VAR_UNKNOWN)
+	wp = firstwin;
+    else
     {
-	if (argvars[1].v_type == VAR_UNKNOWN)
+	tabpage_T	*tp;
+	int		tabnr = tv_get_number(&argvars[1]);
+
+	FOR_ALL_TABPAGES(tp)
+	    if (--tabnr == 0)
+		break;
+	if (tp == NULL)
+	    return -1;
+	if (tp == curtab)
 	    wp = firstwin;
 	else
-	{
-	    tabpage_T	*tp;
-	    int		tabnr = tv_get_number(&argvars[1]);
-
-	    FOR_ALL_TABPAGES(tp)
-		if (--tabnr == 0)
-		    break;
-	    if (tp == NULL)
-		return -1;
-	    if (tp == curtab)
-		wp = firstwin;
-	    else
-		wp = tp->tp_firstwin;
-	}
-	for ( ; wp != NULL; wp = wp->w_next)
-	    if (--winnr == 0)
-		return wp->w_id;
+	    wp = tp->tp_firstwin;
     }
+    for ( ; wp != NULL; wp = wp->w_next)
+	if (--winnr == 0)
+	    return wp->w_id;
     return 0;
 }
 
@@ -380,18 +380,20 @@
 	}
     }
 
-    if (nr > 0)
-	for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
-					      wp != twin; wp = wp->w_next)
+    if (nr <= 0)
+	return 0;
+
+    for (wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
+	    wp != twin; wp = wp->w_next)
+    {
+	if (wp == NULL)
 	{
-	    if (wp == NULL)
-	    {
-		// didn't find it in this tabpage
-		nr = 0;
-		break;
-	    }
-	    ++nr;
+	    // didn't find it in this tabpage
+	    nr = 0;
+	    break;
 	}
+	++nr;
+    }
     return nr;
 }
 
