diff --git a/src/INSTALL b/src/INSTALL
index 99f1047..3da9141 100644
--- a/src/INSTALL
+++ b/src/INSTALL
@@ -11,10 +11,10 @@
 
 See INSTALLami.txt              for Amiga
 See INSTALLmac.txt              for Macintosh
-See INSTALLpc.txt               for PC (Windows 95/98/NT/XP/Vista/7/8/10)
+See INSTALLpc.txt               for PC (Windows XP/Vista/7/8/10)
 See INSTALLvms.txt              for VMS
 See INSTALLx.txt		for cross-compiling on Unix
-See ../README_390.txt           for OS/390 Unix
+See ../READMEdir/README_390.txt for z/OS and OS/390 Unix
 See ../runtime/doc/os_beos.txt  for BeBox
 
 
diff --git a/src/fileio.c b/src/fileio.c
index afc5157..bf46522 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -8086,7 +8086,7 @@
 
 /*
  * Add an autocmd group name.
- * Return it's ID.  Returns AUGROUP_ERROR (< 0) for error.
+ * Return its ID.  Returns AUGROUP_ERROR (< 0) for error.
  */
     static int
 au_new_group(char_u *name)
@@ -8153,7 +8153,7 @@
 
 /*
  * Find the ID of an autocmd group name.
- * Return it's ID.  Returns AUGROUP_ERROR (< 0) for error.
+ * Return its ID.  Returns AUGROUP_ERROR (< 0) for error.
  */
     static int
 au_find_group(char_u *name)
diff --git a/src/gui.c b/src/gui.c
index 1341d50..6154b48 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -5501,7 +5501,7 @@
 	    p = NULL;
 
 	/* Handle the drop, :edit or :split to get to the file.  This also
-	 * frees fnames[].  Skip this if there is only one item it's a
+	 * frees fnames[].  Skip this if there is only one item, it's a
 	 * directory and Shift is held down. */
 	if (count == 1 && (modifiers & MOUSE_SHIFT) != 0
 						     && mch_isdir(fnames[0]))
diff --git a/src/gui_athena.c b/src/gui_athena.c
index 155509d..3620e65 100644
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -900,7 +900,7 @@
 	{
 	    XtUnmanageChild(id);
 	    XtVaSetValues(id, XtNfontSet, gui.menu_fontset, NULL);
-	    /* We should force the widget to recalculate it's
+	    /* We should force the widget to recalculate its
 	     * geometry now. */
 	    XtManageChild(id);
 	}
@@ -929,7 +929,7 @@
 	if (has_submenu(id))
 	    XtVaSetValues(id, XtNrightBitmap, pullerBitmap, NULL);
 
-	/* Force the widget to recalculate it's geometry now. */
+	/* Force the widget to recalculate its geometry now. */
 	if (managed)
 	    XtManageChild(id);
     }
@@ -989,7 +989,7 @@
 	}
     }
     /* Now, to simulate the window being resized.  Only, this
-     * will resize the window to it's current state.
+     * will resize the window to its current state.
      *
      * There has to be a better way, but I do not see one at this time.
      * (David Harrison)
@@ -1071,7 +1071,7 @@
 		}
 
 # ifdef FEAT_BEVAL_GUI
-		/* If we have a tooltip, then we need to change it's colors */
+		/* If we have a tooltip, then we need to change its colors */
 		if (mp->tip != NULL)
 		{
 		    Arg args[2];
@@ -1089,7 +1089,7 @@
 	    {
 		gui_athena_menu_font(mp->id);
 #ifdef FEAT_BEVAL_GUI
-		/* If we have a tooltip, then we need to change it's font */
+		/* If we have a tooltip, then we need to change its font */
 		/* Assume XtNinternational == True (in createBalloonEvalWindow)
 		 */
 		if (mp->tip != NULL)
@@ -1552,7 +1552,7 @@
 	 * This is a hack to stop the Athena simpleMenuWidget from getting a
 	 * BadValue error when a menu's last child is destroyed. We check to
 	 * see if this is the last child and if so, don't delete it. The parent
-	 * will be deleted soon anyway, and it will delete it's children like
+	 * will be deleted soon anyway, and it will delete its children like
 	 * all good widgets do.
 	 */
 	/* NOTE: The cause of the BadValue X Protocol Error is because when the
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index 40b3db6..3d08934 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -925,7 +925,7 @@
 	g_object_ref(menu->id);
 
     /* Workaround for a spurious gtk warning in Ubuntu: "Trying to remove
-     * a child that doesn't believe we're it's parent."
+     * a child that doesn't believe we're its parent."
      * Remove widget from gui.menubar before destroying it. */
     if (menu->id != NULL && gui.menubar != NULL
 			    && gtk_widget_get_parent(menu->id) == gui.menubar)
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 291d93c..dbddb0f 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -4284,7 +4284,7 @@
  * hints (and thus the required size from -geom), but that after that we
  * put the hints back to normal (the actual minimum size) so we may
  * subsequently be resized smaller.  GtkSocket (the parent end) uses the
- * plug's window 'min hints to set *it's* minimum size, but that's also the
+ * plug's window 'min hints to set *its* minimum size, but that's also the
  * only way we have of making ourselves bigger (by set lines/columns).
  * Thus set hints at start-up to ensure correct init. size, then a
  * second after the final attempt to reset the real minimum hints (done by
diff --git a/src/gui_mac.c b/src/gui_mac.c
index aa093a3..96f04c5 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -2278,7 +2278,7 @@
     if (p_mh)
 	ObscureCursor();
 
-    /* Get the key code and it's ASCII representation */
+    /* Get the key code and its ASCII representation */
     key_sym = ((theEvent->message & keyCodeMask) >> 8);
     key_char = theEvent->message & charCodeMask;
     num = 1;
@@ -2597,7 +2597,7 @@
 bail:
     /*
      * when we fail give any additional callback handler a chance to perform
-     * it's actions
+     * its actions
      */
     return CallNextEventHandler(nextHandler, theEvent);
 }
diff --git a/src/gui_motif.c b/src/gui_motif.c
index da97f1f..8467c52 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -1114,7 +1114,7 @@
 	XtManageChild(id);
 
     /*
-     * Now find the menu item that is the furthest down, and get it's position.
+     * Now find the menu item that is the furthest down, and get its position.
      */
     maxy = 0;
     for (mp = root_menu; mp != NULL; mp = mp->next)
@@ -1550,7 +1550,7 @@
 		    XtSetValues(mp->id, args, n);
 		}
 # ifdef FEAT_BEVAL_GUI
-		/* If we have a tooltip, then we need to change it's font */
+		/* If we have a tooltip, then we need to change its font */
 		if (mp->tip != NULL)
 		{
 		    Arg args[2];
@@ -1568,7 +1568,7 @@
 	    {
 		gui_motif_menu_fontlist(mp->id);
 #ifdef FEAT_BEVAL_GUI
-		/* If we have a tooltip, then we need to change it's font */
+		/* If we have a tooltip, then we need to change its font */
 		if (mp->tip != NULL)
 		{
 		    Arg args[1];
@@ -2089,7 +2089,7 @@
 	    {
 		XtUnmanageChild(id);
 		XtVaSetValues(id, XmNfontList, fl, NULL);
-		/* We should force the widget to recalculate it's
+		/* We should force the widget to recalculate its
 		 * geometry now. */
 		XtManageChild(id);
 	    }
@@ -2108,7 +2108,7 @@
 	    {
 		XtUnmanageChild(id);
 		XtVaSetValues(id, XmNfontList, fl, NULL);
-		/* We should force the widget to recalculate it's
+		/* We should force the widget to recalculate its
 		 * geometry now. */
 		XtManageChild(id);
 	    }
@@ -3407,7 +3407,7 @@
 	    {
 		XtUnmanageChild(id);
 		XtVaSetValues(id, XmNfontList, fl, NULL);
-		/* We should force the widget to recalculate it's
+		/* We should force the widget to recalculate its
 		 * geometry now. */
 		XtManageChild(id);
 	    }
@@ -3428,7 +3428,7 @@
 	    {
 		XtUnmanageChild(id);
 		XtVaSetValues(id, XmNfontList, fl, NULL);
-		/* We should force the widget to recalculate it's
+		/* We should force the widget to recalculate its
 		 * geometry now. */
 		XtManageChild(id);
 	    }
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 95fe0cb..0db57ac 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -5658,7 +5658,7 @@
     HMONITOR	    mon;
     MONITORINFO	    moninfo;
 
-    /* work out which monitor the window is on, and get *it's* work area */
+    /* work out which monitor the window is on, and get *its* work area */
     mon = MonitorFromWindow(s_hwnd, MONITOR_DEFAULTTOPRIMARY);
     if (mon != NULL)
     {
diff --git a/src/gui_xmebw.c b/src/gui_xmebw.c
index 9ea020f..b09b1e6 100644
--- a/src/gui_xmebw.c
+++ b/src/gui_xmebw.c
@@ -50,7 +50,7 @@
  * implementation.  Also missing in Motif 1.2 and earlier.
  *
  * We neither use XmeGetPixmapData or _XmGetPixmapData, since with LessTif the
- * pixmap will not appear in it's caches properly. We cache the interesting
+ * pixmap will not appear in its caches properly. We cache the interesting
  * values in XmEnhancedButtonPart instead ourself.
  */
 #if defined(LESSTIF_VERSION) || (XmVersion <= 1002)
diff --git a/src/if_tcl.c b/src/if_tcl.c
index 2289365..7fb9174 100644
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -113,7 +113,7 @@
 
 /*
  *  List of Tcl interpreters who reference a vim window or buffer.
- *  Each buffer and window has it's own list in the w_tcl_ref or b_tcl_ref
+ *  Each buffer and window has its own list in the w_tcl_ref or b_tcl_ref
  *  struct member.  We need this because Tcl can create sub-interpreters with
  *  the "interp" command, and each interpreter can reference all windows and
  *  buffers.
diff --git a/src/macros.h b/src/macros.h
index 1654e3e..e651d2b 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -192,7 +192,7 @@
 #   define mch_access(n, p)	access((n), (p))
 # endif
 # define mch_fstat(n, p)	fstat((n), (p))
-# ifdef MSWIN	/* has it's own mch_stat() function */
+# ifdef MSWIN	/* has its own mch_stat() function */
 #  define mch_stat(n, p)	vim_stat((n), (p))
 # else
 #  ifdef STAT_IGNORES_SLASH
diff --git a/src/os_amiga.c b/src/os_amiga.c
index 767cbfa..7623f82 100644
--- a/src/os_amiga.c
+++ b/src/os_amiga.c
@@ -941,7 +941,7 @@
  *	getch() will return immediately rather than wait for a return. You
  *	lose editing features though.
  *
- * Cooked: This function returns the designate file pointer to it's normal,
+ * Cooked: This function returns the designate file pointer to its normal,
  *	wait for a <CR> mode. This is exactly like raw() except that
  *	it sends a 0 to the console to make it back into a CON: from a RAW:
  */
@@ -1387,7 +1387,7 @@
 	got_int = TRUE;
 }
 
-/* this routine causes manx to use this Chk_Abort() rather than it's own */
+/* this routine causes manx to use this Chk_Abort() rather than its own */
 /* otherwise it resets our ^C when doing any I/O (even when Enable_Abort */
 /* is zero).  Since we want to check for our own ^C's			 */
 
diff --git a/src/os_vms_fix.com b/src/os_vms_fix.com
index 8355a35..5dd4d2b 100644
--- a/src/os_vms_fix.com
+++ b/src/os_vms_fix.com
@@ -15,7 +15,7 @@
 $! remember when DCL didn't have them, and I wanted this to be as
 $! portable as possible, so...  If you want to structure it nicer for
 $! your own use, please feel free to do so.  However, please only
-$! distribute it in it's original form.
+$! distribute it in its original form.
 $!
 $! I wrote it in DCL for portability and ease of use - a C version
 $! would definitely run faster, but then I'd have to deal with compiler
diff --git a/src/os_win32.c b/src/os_win32.c
index 6d6faa9..f610d21 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -5035,9 +5035,9 @@
     {
 	/* Use a terminal window to run the command in. */
 	x = mch_call_shell_terminal(cmd, options);
-#ifdef FEAT_TITLE
+# ifdef FEAT_TITLE
 	resettitle();
-#endif
+# endif
 	return x;
     }
 #endif
@@ -7341,7 +7341,7 @@
  */
 
 /* These magic numbers are from the MS header files */
-#define MIN_STACK_WINNT 2
+# define MIN_STACK_WINNT 2
 
 /*
  * This function does the same thing as _resetstkoflw(), which is only
@@ -7586,7 +7586,7 @@
 	{
 	    int literal = used_file_literal;
 
-#ifdef FEAT_DIFF
+# ifdef FEAT_DIFF
 	    /* When using diff mode may need to concatenate file name to
 	     * directory name.  Just like it's done in main(). */
 	    if (used_file_diff_mode && mch_isdir(str) && GARGCOUNT > 0
@@ -7601,7 +7601,7 @@
 		    str = r;
 		}
 	    }
-#endif
+# endif
 	    /* Re-use the old buffer by renaming it.  When not using literal
 	     * names it's done by alist_expand() below. */
 	    if (used_file_literal)
@@ -7679,9 +7679,9 @@
 #endif
     {
 	_putenv((char *)envbuf);
-# ifdef libintl_putenv
+#ifdef libintl_putenv
 	libintl_putenv((char *)envbuf);
-# endif
+#endif
 	/* Unlike Un*x systems, we can free the string for _putenv(). */
 	vim_free(envbuf);
     }
@@ -7742,7 +7742,7 @@
     fg = (GetRValue(fg) << 16) | (GetGValue(fg) << 8) | GetBValue(fg);
     default_console_color_bg = bg;
     default_console_color_fg = fg;
-#endif
+# endif
 
     set_console_color_rgb();
 }
diff --git a/src/screen.c b/src/screen.c
index 69f7558..1cf90ee 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -6223,7 +6223,7 @@
 	     * first highlighted character.  The stop-highlighting code must
 	     * be written with the cursor just after the last highlighted
 	     * character.
-	     * Overwriting a character doesn't remove it's highlighting.  Need
+	     * Overwriting a character doesn't remove its highlighting.  Need
 	     * to clear the rest of the line, and force redrawing it
 	     * completely.
 	     */
diff --git a/src/search.c b/src/search.c
index dff532d..98665f7 100644
--- a/src/search.c
+++ b/src/search.c
@@ -357,9 +357,9 @@
  * Save and restore the search pattern for incremental highlight search
  * feature.
  *
- * It's similar but differnt from save_search_patterns() and
+ * It's similar to but different from save_search_patterns() and
  * restore_search_patterns(), because the search pattern must be restored when
- * cannceling incremental searching even if it's called inside user functions.
+ * canceling incremental searching even if it's called inside user functions.
  */
     void
 save_last_search_pattern(void)
@@ -2869,7 +2869,7 @@
 	    }
 #endif
 
-	    /* POSIX has it's own ideas of what a paragraph boundary is and it
+	    /* POSIX has its own ideas of what a paragraph boundary is and it
 	     * doesn't match historical Vi: It also stops at a "{" in the
 	     * first column and at an empty line. */
 	    if (!first && did_skip && (startPS(curr, what, both)
diff --git a/src/spell.c b/src/spell.c
index 6fc0601..1ca1f9e 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -2686,7 +2686,7 @@
 
 /*
  * Find the region "region[2]" in "rp" (points to "sl_regions").
- * Each region is simply stored as the two characters of it's name.
+ * Each region is simply stored as the two characters of its name.
  * Returns the index if found (first is 0), REGION_ALL if not found.
  */
     static int
diff --git a/src/spellfile.c b/src/spellfile.c
index 7144708..27b9e85 100644
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -3784,7 +3784,7 @@
 	if (get_affitem(affile->af_flagtype, &p) != 0)
 	{
 	    /* A flag is a postponed prefix flag if it appears in "af_pref"
-	     * and it's ID is not zero. */
+	     * and its ID is not zero. */
 	    vim_strncpy(key, prevp, p - prevp);
 	    hi = hash_find(&affile->af_pref, key);
 	    if (!HASHITEM_EMPTY(hi))
diff --git a/src/testdir/README.txt b/src/testdir/README.txt
index c649259..b3200a4 100644
--- a/src/testdir/README.txt
+++ b/src/testdir/README.txt
@@ -54,7 +54,7 @@
 
 TO ADD A SCREEN DUMP TEST:
 
-Mostly the same as writing a new style test.  Additonally, see help on
+Mostly the same as writing a new style test.  Additionally, see help on
 "terminal-dumptest".  Put the reference dump in "dumps/Test_func_name.dump".
 
 
diff --git a/src/version.c b/src/version.c
index 8a64e4a..e72adfc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -793,6 +793,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    528,
+/**/
     527,
 /**/
     526,
diff --git a/src/vim.h b/src/vim.h
index 7a66ab0..be86c6b 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1270,7 +1270,7 @@
     EVENT_BUFWRITECMD,		// write buffer using command
     EVENT_BUFWRITEPOST,		// after writing a buffer
     EVENT_BUFWRITEPRE,		// before writing a buffer
-    EVENT_CMDLINECHANGED,	// command line was modified*/
+    EVENT_CMDLINECHANGED,	// command line was modified
     EVENT_CMDLINEENTER,		// after entering the command line
     EVENT_CMDLINELEAVE,		// before leaving the command line
     EVENT_CMDUNDEFINED,		// command undefined
