diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 6a2f8ef..5c10562 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2373,6 +2373,7 @@
 term_getcursor({buf})		List	get the cursor position of a terminal
 term_getjob({buf})		Job	get the job associated with a terminal
 term_getline({buf}, {row})	String	get a line of text from a terminal
+term_getscrolled({buf})		Number	get the scroll count of a terminal
 term_getsize({buf})		List	get the size of a terminal
 term_getstatus({buf})		String	get the status of a terminal
 term_gettitle({buf})		String	get the title of a terminal
@@ -2984,6 +2985,11 @@
 		The file is flushed after every message, on Unix you can use
 		"tail -f" to see what is going on in real time.
 
+		This function is not available in the |sandbox|.
+		NOTE: the channel communication is stored in the file, be
+		aware that this may contain confidential and privacy sensitive
+		information, e.g. a password you type in a terminal window.
+
 
 ch_open({address} [, {options}])				*ch_open()*
 		Open a channel to {address}.  See |channel|.
@@ -7948,6 +7954,18 @@
 		returned.
 		{only available when compiled with the |+terminal| feature}
 
+term_getscrolled({buf})					*term_getscrolled()*
+		Return the number of lines that scrolled to above the top of
+		terminal {buf}.  This is the offset between the row number
+		used for |term_getline()| and |getline()|, so that: >
+			term_getline(buf, N)
+<		is equal to: >
+			`getline(N + term_getscrolled(buf))
+<		(if that line exists).
+
+		{buf} is used as with |term_getsize()|.
+		{only available when compiled with the |+terminal| feature}
+
 term_getsize({buf})					*term_getsize()*
 		Get the size of terminal {buf}. Returns a list with two
 		numbers: [rows, cols].  This is the size of the terminal, not
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 0703b44..b5880c5 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -835,6 +835,7 @@
     {"term_getcursor",	1, 1, f_term_getcursor},
     {"term_getjob",	1, 1, f_term_getjob},
     {"term_getline",	2, 2, f_term_getline},
+    {"term_getscrolled", 1, 1, f_term_getscrolled},
     {"term_getsize",	1, 1, f_term_getsize},
     {"term_getstatus",	1, 1, f_term_getstatus},
     {"term_gettitle",	1, 1, f_term_gettitle},
diff --git a/src/proto/terminal.pro b/src/proto/terminal.pro
index 8d02968..7b28c28 100644
--- a/src/proto/terminal.pro
+++ b/src/proto/terminal.pro
@@ -21,6 +21,7 @@
 void f_term_getcursor(typval_T *argvars, typval_T *rettv);
 void f_term_getjob(typval_T *argvars, typval_T *rettv);
 void f_term_getline(typval_T *argvars, typval_T *rettv);
+void f_term_getscrolled(typval_T *argvars, typval_T *rettv);
 void f_term_getsize(typval_T *argvars, typval_T *rettv);
 void f_term_getstatus(typval_T *argvars, typval_T *rettv);
 void f_term_gettitle(typval_T *argvars, typval_T *rettv);
diff --git a/src/terminal.c b/src/terminal.c
index 32f2266..36d5cf1 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -40,14 +40,15 @@
  *   - Need an option or argument to drop the window+buffer right away, to be
  *     used for a shell or Vim. 'termfinish'; "close", "open" (open window when
  *     job finishes).
+ *     patch by Yasuhiro: #1950
  * - add option values to the command:
  *      :term <24x80> <close> vim notes.txt
+ *   or use:
+ *      :term ++24x80 ++close vim notes.txt
  * - support different cursor shapes, colors and attributes
  * - make term_getcursor() return type (none/block/bar/underline) and
  *   attributes (color, blink, etc.)
  * - MS-Windows: no redraw for 'updatetime'  #1915
- * - term_getline() and term_scrape() don't work once the job exited. Use the
- *   buffer and scrollback, remembering the topline from when the job exited.
  * - To set BS correctly, check get_stty(); Pass the fd of the pty.
  *   For the GUI fill termios with default values, perhaps like pangoterm:
  *   http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134
@@ -2026,6 +2027,19 @@
 }
 
 /*
+ * "term_getscrolled(buf)" function
+ */
+    void
+f_term_getscrolled(typval_T *argvars, typval_T *rettv)
+{
+    buf_T	*buf = term_get_buf(argvars);
+
+    if (buf == NULL)
+	return;
+    rettv->vval.v_number = buf->b_term->tl_scrollback_scrolled;
+}
+
+/*
  * "term_getsize(buf)" function
  */
     void
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 2220a16..cd884e1 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -227,9 +227,13 @@
     sleep 100m
   endif
 
+  let scrolled = term_getscrolled(buf)
   call assert_equal('1', getline(1))
+  call assert_equal('1', term_getline(buf, 1 - scrolled))
   call assert_equal('49', getline(49))
+  call assert_equal('49', term_getline(buf, 49 - scrolled))
   call assert_equal('200', getline(200))
+  call assert_equal('200', term_getline(buf, 200 - scrolled))
 
   exe buf . 'bwipe'
   call delete('Xtext')
diff --git a/src/version.c b/src/version.c
index 30d76f1..326f33b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    893,
+/**/
     892,
 /**/
     891,
