diff --git a/src/gui_w48.c b/src/gui_w48.c
index 97a0ca0..9a0247f 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -2194,9 +2194,8 @@
 	s_findrep_struct.Flags |= FR_WHOLEWORD;
     if (entry_text != NULL && *entry_text != NUL)
     {
-	STRNCPY(s_findrep_struct.lpstrFindWhat, entry_text,
-					       s_findrep_struct.wFindWhatLen);
-	s_findrep_struct.lpstrFindWhat[s_findrep_struct.wFindWhatLen - 1] = NUL;
+	vim_strncpy(s_findrep_struct.lpstrFindWhat, entry_text,
+					   s_findrep_struct.wFindWhatLen - 1);
 	s_findrep_struct.lpstrReplaceWith[0] = NUL;
     }
     vim_free(entry_text);
@@ -3102,10 +3101,7 @@
     if (dflt == NULL)
 	fileBuf[0] = NUL;
     else
-    {
-	STRNCPY(fileBuf, dflt, MAXPATHL - 1);
-	fileBuf[MAXPATHL - 1] = NUL;
-    }
+	vim_strncpy(fileBuf, dflt, MAXPATHL - 1);
 
     /* Convert the filter to Windows format. */
     filterp = convert_filter(filter);
diff --git a/src/os_mswin.c b/src/os_mswin.c
index b0c137f..6bffdb9 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -410,8 +410,7 @@
 		cname = ucs2_to_enc((short_u *)wbuf, NULL);
 		if (cname != NULL)
 		{
-		    STRNCPY(buf, cname, len);
-		    buf[len - 1] = NUL;
+		    vim_strncpy(buf, cname, len - 1);
 		    nResult = OK;
 		}
 	    }
@@ -423,8 +422,8 @@
 	{
 	    if (_fullpath(buf, fname, len - 1) == NULL)
 	    {
-		STRNCPY(buf, fname, len);   /* failed, use relative path name */
-		buf[len - 1] = NUL;
+		/* failed, use relative path name */
+		vim_strncpy(buf, fname, len - 1);
 	    }
 	    else
 		nResult = OK;
@@ -493,8 +492,7 @@
     char	buf[_MAX_PATH + 1];
     char	*p;
 
-    STRNCPY(buf, name, _MAX_PATH);
-    buf[_MAX_PATH] = NUL;
+    vim_strncpy(buf, name, _MAX_PATH);
     p = buf + strlen(buf);
     if (p > buf)
 	mb_ptr_back(buf, p);
@@ -1527,8 +1525,7 @@
 
 	if (lpszMem)
 	{
-	    STRNCPY(lpszMem, str, metadata.txtlen);
-	    lpszMem[metadata.txtlen] = NUL;
+	    vim_strncpy(lpszMem, str, metadata.txtlen);
 	    GlobalUnlock(hMem);
 	}
     }
diff --git a/src/os_win32.c b/src/os_win32.c
index 6ad674e..c2d5ebb 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -2356,7 +2356,7 @@
 
     if (GetUserName(szUserName, &cch))
     {
-	STRNCPY(s, szUserName, len);
+	vim_strncpy(s, szUserName, len - 1);
 	return OK;
     }
     s[0] = NUL;
@@ -2375,10 +2375,7 @@
     DWORD cch = len;
 
     if (!GetComputerName(s, &cch))
-    {
-	STRNCPY(s, "PC (Win32 Vim)", len);
-	s[len - 1] = NUL;	/* make sure it's terminated */
-    }
+	vim_strncpy(s, "PC (Win32 Vim)", len - 1);
 }
 
 
@@ -2418,8 +2415,7 @@
 
 	    if (p != NULL)
 	    {
-		STRNCPY(buf, p, len - 1);
-		buf[len - 1] = NUL;
+		vim_strncpy(buf, p, len - 1);
 		vim_free(p);
 		return OK;
 	    }
@@ -2591,7 +2587,7 @@
     /*
      * Loop over all extensions in $PATHEXT.
      */
-    STRNCPY(buf, name, _MAX_PATH);
+    vim_strncpy(buf, name, _MAX_PATH - 1);
     p = mch_getenv("PATHEXT");
     if (p == NULL)
 	p = (char_u *)".com;.exe;.bat;.cmd";
@@ -4452,7 +4448,7 @@
 		char		    *pch;
 		WIN32_FIND_DATA	    d;
 
-		STRNCPY(TempName, n, _MAX_PATH);
+		vim_strncpy(TempName, n, _MAX_PATH);
 		pch = TempName + STRLEN(TempName) - 1;
 		if (*pch != '\\' && *pch != '/')
 		    *++pch = '\\';
