updated for version 7.0196
diff --git a/src/eval.c b/src/eval.c
index 3044ef8..50f688a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -15378,7 +15378,21 @@
 	    return NULL;
 	return pp;
     }
-    if (name[0] == '$')		/* last column or line */
+    if (name[0] == 'w' && lnum)
+    {
+	pos.col = 0;
+	if (name[1] == '0')		/* "w0": first visible line */
+	{
+	    pos.lnum = curwin->w_topline;
+	    return &pos;
+	}
+	else if (name[1] == '$')	/* "w$": last visible line */
+	{
+	    pos.lnum = curwin->w_botline - 1;
+	    return &pos;
+	}
+    }
+    else if (name[0] == '$')		/* last column or line */
     {
 	if (lnum)
 	{