diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index eb4eba0..1650ee8 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4642,6 +4642,7 @@
 			id	get information for the quickfix list with
 				|quickfix-ID|; zero means the id for the
 				current list or the list specifed by "nr"
+			idx	index of the current entry in the list
 			items	quickfix list entries
 			lines	use 'errorformat' to extract items from a list
 				of lines and return the resulting entries.
@@ -4650,6 +4651,7 @@
 			nr	get information for this quickfix list; zero
 				means the current quickfix list and "$" means
 				the last quickfix list
+			size	number of entries in the quickfix list
 			title	get the list title
 			winid	get the |window-ID| (if opened)
 			all	all of the above quickfix properties
@@ -4669,8 +4671,10 @@
 		The returned dictionary contains the following entries:
 			context	context information stored with |setqflist()|
 			id	quickfix list ID |quickfix-ID|
+			idx	index of the current entry in the list
 			items	quickfix list entries
 			nr	quickfix list number
+			size	number of entries in the quickfix list
 			title	quickfix list title text
 			winid	quickfix |window-ID| (if opened)
 
diff --git a/src/quickfix.c b/src/quickfix.c
index 5ff4091..39eb5b6 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2212,8 +2212,7 @@
     old_qf_ptr = qf_ptr;
     qf_index = qi->qf_lists[qi->qf_curlist].qf_index;
     old_qf_index = qf_index;
-    if (dir == FORWARD || dir == FORWARD_FILE ||
-	dir == BACKWARD || dir == BACKWARD_FILE)    /* next/prev valid entry */
+    if (dir != 0)    /* next/prev valid entry */
     {
 	qf_ptr = get_nth_valid_entry(qi, errornr, qf_ptr, &qf_index, dir);
 	if (qf_ptr == NULL)
@@ -4726,6 +4725,8 @@
     QF_GETLIST_WINID	= 0x8,
     QF_GETLIST_CONTEXT	= 0x10,
     QF_GETLIST_ID	= 0x20,
+    QF_GETLIST_IDX	= 0x40,
+    QF_GETLIST_SIZE	= 0x80,
     QF_GETLIST_ALL	= 0xFF
 };
 
@@ -4882,6 +4883,12 @@
     if (dict_find(what, (char_u *)"items", -1) != NULL)
 	flags |= QF_GETLIST_ITEMS;
 
+    if (dict_find(what, (char_u *)"idx", -1) != NULL)
+	flags |= QF_GETLIST_IDX;
+
+    if (dict_find(what, (char_u *)"size", -1) != NULL)
+	flags |= QF_GETLIST_SIZE;
+
     if (flags & QF_GETLIST_TITLE)
     {
 	char_u	*t;
@@ -4934,6 +4941,19 @@
 	status = dict_add_nr_str(retdict, "id", qi->qf_lists[qf_idx].qf_id,
 									 NULL);
 
+    if ((status == OK) && (flags & QF_GETLIST_IDX))
+    {
+	int idx = qi->qf_lists[qf_idx].qf_index;
+	if (qi->qf_lists[qf_idx].qf_count == 0)
+	    /* For empty lists, qf_index is set to 1 */
+	    idx = 0;
+	status = dict_add_nr_str(retdict, "idx", idx, NULL);
+    }
+
+    if ((status == OK) && (flags & QF_GETLIST_SIZE))
+	status = dict_add_nr_str(retdict, "size",
+					qi->qf_lists[qf_idx].qf_count, NULL);
+
     return status;
 }
 
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 671381c..90a5105 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -430,6 +430,19 @@
 
   call delete('Xqftestfile1')
   call delete('Xqftestfile2')
+
+  " Should be able to use next/prev with invalid entries
+  Xexpr ""
+  call assert_equal(0, g:Xgetlist({'idx' : 0}).idx)
+  call assert_equal(0, g:Xgetlist({'size' : 0}).size)
+  Xaddexpr ['foo', 'bar', 'baz', 'quux', 'shmoo']
+  call assert_equal(5, g:Xgetlist({'size' : 0}).size)
+  Xlast
+  call assert_equal(5, g:Xgetlist({'idx' : 0}).idx)
+  Xfirst
+  call assert_equal(1, g:Xgetlist({'idx' : 0}).idx)
+  2Xnext
+  call assert_equal(3, g:Xgetlist({'idx' : 0}).idx)
 endfunc
 
 func Test_browse()
diff --git a/src/version.c b/src/version.c
index 8546911..ce9d2c2 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1112,
+/**/
     1111,
 /**/
     1110,
