diff --git a/src/search.c b/src/search.c
index e231a3a..9f9f0c1 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4740,17 +4740,33 @@
 			 * Isolate the file name.
 			 * Include the surrounding "" or <> if present.
 			 */
-			for (p = incl_regmatch.endp[0]; !vim_isfilec(*p); p++)
-			    ;
-			for (i = 0; vim_isfilec(p[i]); i++)
-			    ;
+			if (inc_opt != NULL
+				   && strstr((char *)inc_opt, "\\zs") != NULL)
+			{
+			    /* pattern contains \zs, use the match */
+			    p = incl_regmatch.startp[0];
+			    i = (int)(incl_regmatch.endp[0]
+						   - incl_regmatch.startp[0]);
+			}
+			else
+			{
+			    /* find the file name after the end of the match */
+			    for (p = incl_regmatch.endp[0];
+						  *p && !vim_isfilec(*p); p++)
+				;
+			    for (i = 0; vim_isfilec(p[i]); i++)
+				;
+			}
+
 			if (i == 0)
 			{
 			    /* Nothing found, use the rest of the line. */
 			    p = incl_regmatch.endp[0];
 			    i = (int)STRLEN(p);
 			}
-			else
+			/* Avoid checking before the start of the line, can
+			 * happen if \zs appears in the regexp. */
+			else if (p > line)
 			{
 			    if (p[-1] == '"' || p[-1] == '<')
 			    {
diff --git a/src/testdir/test17.in b/src/testdir/test17.in
index e59144f..9c25e99 100644
--- a/src/testdir/test17.in
+++ b/src/testdir/test17.in
@@ -1,4 +1,6 @@
-Tests for "gf" on ${VAR}
+Tests for:
+- "gf" on ${VAR},
+- ":checkpath!" with various 'include' settings.
 
 STARTTEST
 :so small.vim
@@ -20,8 +22,99 @@
 :endif
 gf
 :w! test.out
-:qa!
+:brewind
 ENDTEST
 
 	${CDIR}/test17a.in
 	$TDIR/test17a.in
+
+STARTTEST
+:" check for 'include' without \zs or \ze
+:lang C
+:!rm -f ./Xbase.a
+:!rm -rf ./Xdir1
+:!mkdir -p Xdir1/dir2
+:e Xdir1/dir2/foo.a
+i#include   "bar.a"
+:w
+:e Xdir1/dir2/bar.a
+i#include      "baz.a"
+:w
+:e Xdir1/dir2/baz.a
+i#include            "foo.a"
+:w
+:e Xbase.a
+:set path=Xdir1/dir2
+i#include    <foo.a>
+:w
+:redir! >>test.out
+:checkpath!
+:redir END
+:brewind
+ENDTEST
+
+STARTTEST
+:" check for 'include' with \zs and \ze
+:!rm -f ./Xbase.b
+:!rm -rf ./Xdir1
+:!mkdir -p Xdir1/dir2
+:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
+:function! DotsToSlashes()
+:  return substitute(v:fname, '\.', '/', 'g') . '.b'
+:endfunction
+:let &includeexpr='DotsToSlashes()'
+:e Xdir1/dir2/foo.b
+i%inc   /bar/
+:w
+:e Xdir1/dir2/bar.b
+i%inc      /baz/
+:w
+:e Xdir1/dir2/baz.b
+i%inc            /foo/
+:w
+:e Xbase.b
+:set path=Xdir1/dir2
+i%inc    /foo/
+:w
+:redir! >>test.out
+:checkpath!
+:redir END
+:brewind
+ENDTEST
+
+STARTTEST
+:" check for 'include' with \zs and no \ze
+:!rm -f ./Xbase.c
+:!rm -rf ./Xdir1
+:!mkdir -p Xdir1/dir2
+:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
+:function! StripNewlineChar()
+:  if v:fname =~ '\n$'
+:    return v:fname[:-2]
+:  endif
+:  return v:fname
+:endfunction
+:let &includeexpr='StripNewlineChar()'
+:e Xdir1/dir2/foo.c
+i%inc   bar.c
+:w
+:e Xdir1/dir2/bar.c
+i%inc      baz.c
+:w
+:e Xdir1/dir2/baz.c
+i%inc            foo.c
+:w
+:e Xdir1/dir2/FALSE.c
+i%inc            foo.c
+:w
+:e Xbase.c
+:set path=Xdir1/dir2
+i%inc    FALSE.c foo.c
+:w
+:redir! >>test.out
+:checkpath!
+:redir END
+:brewind
+:q
+ENDTEST
+
diff --git a/src/testdir/test17.ok b/src/testdir/test17.ok
index 7e89364..79fef07 100644
--- a/src/testdir/test17.ok
+++ b/src/testdir/test17.ok
@@ -1,3 +1,33 @@
 This file is just to test "gf" in test 17.
 The contents is not important.
 Just testing!
+
+
+--- Included files in path ---
+Xdir1/dir2/foo.a
+Xdir1/dir2/foo.a -->
+  Xdir1/dir2/bar.a
+  Xdir1/dir2/bar.a -->
+    Xdir1/dir2/baz.a
+    Xdir1/dir2/baz.a -->
+      "foo.a"  (Already listed)
+
+
+--- Included files in path ---
+Xdir1/dir2/foo.b
+Xdir1/dir2/foo.b -->
+  Xdir1/dir2/bar.b
+  Xdir1/dir2/bar.b -->
+    Xdir1/dir2/baz.b
+    Xdir1/dir2/baz.b -->
+      foo  (Already listed)
+
+
+--- Included files in path ---
+Xdir1/dir2/foo.c
+Xdir1/dir2/foo.c -->
+  Xdir1/dir2/bar.c
+  Xdir1/dir2/bar.c -->
+    Xdir1/dir2/baz.c
+    Xdir1/dir2/baz.c -->
+      foo.c^@  (Already listed)
diff --git a/src/version.c b/src/version.c
index c8a283e..397d9b0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    609,
+/**/
     608,
 /**/
     607,
