diff --git a/src/channel.c b/src/channel.c
index 19d3c5d..7eb6ce7 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -4844,7 +4844,7 @@
 
     for (job = first_job; job != NULL; job = job->jv_next)
 	if (job->jv_status == JOB_STARTED && job->jv_stoponexit != NULL)
-	    mch_stop_job(job, job->jv_stoponexit);
+	    mch_signal_job(job, job->jv_stoponexit);
 }
 
 /*
@@ -5191,7 +5191,7 @@
 	return 0;
     }
     ch_log(job->jv_channel, "Stopping job with '%s'", (char *)arg);
-    if (mch_stop_job(job, arg) == FAIL)
+    if (mch_signal_job(job, arg) == FAIL)
 	return 0;
 
     /* Assume that only "kill" will kill the job. */
diff --git a/src/os_unix.c b/src/os_unix.c
index ade8d88..141a3f0 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5557,7 +5557,7 @@
  * Return FAIL if "how" is not a valid name.
  */
     int
-mch_stop_job(job_T *job, char_u *how)
+mch_signal_job(job_T *job, char_u *how)
 {
     int	    sig = -1;
     pid_t   job_pid;
diff --git a/src/os_win32.c b/src/os_win32.c
index 2ee3f2e..9dc039b 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -5248,7 +5248,7 @@
  * Return FAIL if it didn't work.
  */
     int
-mch_stop_job(job_T *job, char_u *how)
+mch_signal_job(job_T *job, char_u *how)
 {
     int ret;
 
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 8e955aa..20765c0 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -63,7 +63,7 @@
 void mch_job_start(char **argv, job_T *job, jobopt_T *options);
 char *mch_job_status(job_T *job);
 job_T *mch_detect_ended_job(job_T *job_list);
-int mch_stop_job(job_T *job, char_u *how);
+int mch_signal_job(job_T *job, char_u *how);
 void mch_clear_job(job_T *job);
 void mch_breakcheck(int force);
 int mch_expandpath(garray_T *gap, char_u *path, int flags);
diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro
index bc16a19..7e6953c 100644
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -45,7 +45,7 @@
 void mch_job_start(char *cmd, job_T *job, jobopt_T *options);
 char *mch_job_status(job_T *job);
 job_T *mch_detect_ended_job(job_T *job_list);
-int mch_stop_job(job_T *job, char_u *how);
+int mch_signal_job(job_T *job, char_u *how);
 void mch_clear_job(job_T *job);
 void mch_set_normal_colors(void);
 void mch_write(char_u *s, int len);
diff --git a/src/terminal.c b/src/terminal.c
index e22f7bc..b22cc1a 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1143,7 +1143,7 @@
 	    /* We don't know if the job can handle CTRL-C itself or not, this
 	     * may kill the shell instead of killing the command running in the
 	     * shell. */
-	    mch_stop_job(curbuf->b_term->tl_job, (char_u *)"quit");
+	    mch_signal_job(curbuf->b_term->tl_job, (char_u *)"quit");
 #endif
 
 	if (c == (termkey == 0 ? Ctrl_W : termkey) || c == Ctrl_BSL)
@@ -2735,7 +2735,7 @@
 		break;
 	}
 	if (part < PART_COUNT && mch_report_winsize(fd, rows, cols) == OK)
-	    mch_stop_job(term->tl_job, (char_u *)"winch");
+	    mch_signal_job(term->tl_job, (char_u *)"winch");
     }
 }
 
diff --git a/src/version.c b/src/version.c
index 8b112c6..707be4f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    899,
+/**/
     898,
 /**/
     897,
