diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 0b44e58..85230a6 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1504,8 +1504,10 @@
 					*b:changedtick* *changetick*
 b:changedtick	The total number of changes to the current buffer.  It is
 		incremented for each change.  An undo command is also a change
-		in this case.  This can be used to perform an action only when
-		the buffer has changed.  Example: >
+		in this case.  Resetting 'modified' when writing the buffer is
+		also counted.
+		This can be used to perform an action only when the buffer has
+		changed.  Example: >
 		    :if my_changedtick != b:changedtick
 		    :	let my_changedtick = b:changedtick
 		    :	call My_Update()
diff --git a/src/buffer.c b/src/buffer.c
index 66f6fc6..e6ae09d 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -60,7 +60,9 @@
 /* Number of times free_buffer() was called. */
 static int	buf_free_count = 0;
 
-/* Read data from buffer for retrying. */
+/*
+ * Read data from buffer for retrying.
+ */
     static int
 read_buffer(
     int		read_stdin,	    /* read file from stdin, otherwise fifo */
@@ -104,7 +106,7 @@
 	if (!readonlymode && !BUFEMPTY())
 	    changed();
 	else if (retval == OK)
-	    unchanged(curbuf, FALSE);
+	    unchanged(curbuf, FALSE, TRUE);
 
 	if (retval == OK)
 	{
@@ -275,7 +277,7 @@
        )
 	changed();
     else if (retval == OK && !read_stdin && !read_fifo)
-	unchanged(curbuf, FALSE);
+	unchanged(curbuf, FALSE, TRUE);
     save_file_ff(curbuf);		/* keep this fileformat */
 
     /* Set last_changedtick to avoid triggering a TextChanged autocommand right
@@ -700,7 +702,7 @@
 buf_clear_file(buf_T *buf)
 {
     buf->b_ml.ml_line_count = 1;
-    unchanged(buf, TRUE);
+    unchanged(buf, TRUE, TRUE);
     buf->b_shortname = FALSE;
     buf->b_p_eol = TRUE;
     buf->b_start_eol = TRUE;
diff --git a/src/change.c b/src/change.c
index fcaa570..b928786 100644
--- a/src/change.c
+++ b/src/change.c
@@ -842,9 +842,11 @@
 /*
  * Called when the changed flag must be reset for buffer "buf".
  * When "ff" is TRUE also reset 'fileformat'.
+ * When "always_inc_changedtick" is TRUE b:changedtick is incremented also when
+ * the changed flag was off.
  */
     void
-unchanged(buf_T *buf, int ff)
+unchanged(buf_T *buf, int ff, int always_inc_changedtick)
 {
     if (buf->b_changed || (ff && file_ff_differs(buf, FALSE)))
     {
@@ -857,8 +859,10 @@
 #ifdef FEAT_TITLE
 	need_maketitle = TRUE;	    // set window title later
 #endif
+	++CHANGEDTICK(buf);
     }
-    ++CHANGEDTICK(buf);
+    else if (always_inc_changedtick)
+	++CHANGEDTICK(buf);
 #ifdef FEAT_NETBEANS_INTG
     netbeans_unmodified(buf);
 #endif
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 66e5fca..3c73030 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1197,7 +1197,7 @@
     }
     else if (ret == VIM_NO)
     {
-	unchanged(buf, TRUE);
+	unchanged(buf, TRUE, FALSE);
     }
     else if (ret == VIM_ALL)
     {
@@ -1240,7 +1240,7 @@
 	 * mark all buffers as unchanged
 	 */
 	FOR_ALL_BUFFERS(buf2)
-	    unchanged(buf2, TRUE);
+	    unchanged(buf2, TRUE, FALSE);
     }
 }
 #endif
diff --git a/src/fileio.c b/src/fileio.c
index d746298..e6fb6bf 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4908,8 +4908,8 @@
 	    && !write_info.bw_conv_error
 	    && (overwriting || vim_strchr(p_cpo, CPO_PLUS) != NULL))
     {
-	unchanged(buf, TRUE);
-	/* b:changedtick is always incremented in unchanged() but that
+	unchanged(buf, TRUE, FALSE);
+	/* b:changedtick is may be incremented in unchanged() but that
 	 * should not trigger a TextChanged event. */
 	if (buf->b_last_changedtick + 1 == CHANGEDTICK(buf))
 	    buf->b_last_changedtick = CHANGEDTICK(buf);
@@ -7081,7 +7081,7 @@
 	    else if (buf == curbuf)  /* "buf" still valid */
 	    {
 		/* Mark the buffer as unmodified and free undo info. */
-		unchanged(buf, TRUE);
+		unchanged(buf, TRUE, TRUE);
 		if ((flags & READ_KEEP_UNDO) == 0)
 		{
 		    u_blockfree(buf);
diff --git a/src/memline.c b/src/memline.c
index 5ae99df..e7ae6df 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -1435,7 +1435,7 @@
 	set_option_value((char_u *)"fenc", 0L, b0_fenc, OPT_LOCAL);
 	vim_free(b0_fenc);
     }
-    unchanged(curbuf, TRUE);
+    unchanged(curbuf, TRUE, TRUE);
 
     bnum = 1;		/* start with block 1 */
     page_count = 1;	/* which is 1 page */
diff --git a/src/proto/change.pro b/src/proto/change.pro
index 79306e3..de3a94a 100644
--- a/src/proto/change.pro
+++ b/src/proto/change.pro
@@ -14,7 +14,7 @@
 void deleted_lines(linenr_T lnum, long count);
 void deleted_lines_mark(linenr_T lnum, long count);
 void changed_lines(linenr_T lnum, colnr_T col, linenr_T lnume, long xtra);
-void unchanged(buf_T *buf, int ff);
+void unchanged(buf_T *buf, int ff, int always_inc_changedtick);
 void ins_bytes(char_u *p);
 void ins_bytes_len(char_u *p, int len);
 void ins_char(int c);
diff --git a/src/undo.c b/src/undo.c
index cf3f866..dd46670 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -2805,7 +2805,7 @@
 	/* per netbeans undo rules, keep it as modified */
 	if (!isNetbeansModified(curbuf))
 #endif
-	unchanged(curbuf, FALSE);
+	unchanged(curbuf, FALSE, TRUE);
 
     /*
      * restore marks from before undo/redo
diff --git a/src/version.c b/src/version.c
index 8aac5d5..79b0d55 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1498,
+/**/
     1497,
 /**/
     1496,
