diff --git a/PC/getpathp.c b/PC/getpathp.c
index 4354853..76ee5e6 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -134,7 +134,7 @@
 reduce(dir)
 	char *dir;
 {
-	int i = strlen(dir);
+	size_t i = strlen(dir);
 	while (i > 0 && !is_sep(dir[i]))
 		--i;
 	dir[i] = '\0';
@@ -172,7 +172,7 @@
 	char *buffer;
 	char *stuff;
 {
-	int n, k;
+	size_t n, k;
 	if (is_sep(stuff[0]))
 		n = 0;
 	else {
@@ -207,7 +207,6 @@
 	char *argv0_path;
 	char *landmark;
 {
-
 	/* Search from argv0_path, until landmark is found */
 	strcpy(prefix, argv0_path);
 	do {
@@ -244,7 +243,7 @@
 	TCHAR *dataBuf = NULL;
 	static const TCHAR keyPrefix[] = _T("Software\\Python\\PythonCore\\");
 	static const TCHAR keySuffix[] = _T("\\PythonPath");
-	int versionLen;
+	size_t versionLen;
 	DWORD index;
 	TCHAR *keyBuf = NULL;
 	TCHAR *keyBufPtr;
@@ -402,7 +401,7 @@
 			char *delim = strchr(path, DELIM);
 
 			if (delim) {
-				int len = delim - path;
+				size_t len = delim - path;
 				strncpy(progpath, path, len);
 				*(progpath + len) = '\0';
 			}
@@ -429,7 +428,7 @@
 {
 	char argv0_path[MAXPATHLEN+1];
 	char *buf;
-	int bufsz;
+	size_t bufsz;
 	char *pythonhome = Py_GetPythonHome();
 	char *envpath = getenv("PYTHONPATH");
 
@@ -554,7 +553,7 @@
 	else {
 		char *p = PYTHONPATH;
 		char *q;
-		int n;
+		size_t n;
 		for (;;) {
 			q = strchr(p, DELIM);
 			if (q == NULL)
diff --git a/PC/import_nt.c b/PC/import_nt.c
index 2fe44b6..a31ef30 100644
--- a/PC/import_nt.c
+++ b/PC/import_nt.c
@@ -33,7 +33,7 @@
 
 	// Calculate the size for the sprintf buffer.
 	// Get the size of the chars only, plus 1 NULL.
-	int bufSize = sizeof(keyPrefix)-1 + strlen(PyWin_DLLVersionString) + sizeof(keySuffix) + strlen(moduleName) + sizeof(debugString) - 1;
+	size_t bufSize = sizeof(keyPrefix)-1 + strlen(PyWin_DLLVersionString) + sizeof(keySuffix) + strlen(moduleName) + sizeof(debugString) - 1;
 	// alloca == no free required, but memory only local to fn, also no heap fragmentation!
 	moduleKey = alloca(bufSize); 
 	sprintf(moduleKey, "Software\\Python\\PythonCore\\%s\\Modules\\%s%s", PyWin_DLLVersionString, moduleName, debugString);
@@ -44,7 +44,7 @@
 		return NULL;
 	// use the file extension to locate the type entry.
 	for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) {
-		int extLen=strlen(fdp->suffix);
+		size_t extLen = strlen(fdp->suffix);
 		if (modNameSize>extLen && strnicmp(pathBuf+(modNameSize-extLen-1),fdp->suffix,extLen)==0)
 			break;
 	}
