diff --git a/Python/ceval.c b/Python/ceval.c
index bcdd98f..3225685 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2769,7 +2769,7 @@
 			/* Call the base's *type*, if it is callable.
 			   This code is a hook for Donald Beaudry's
 			   and Jim Fulton's type extensions.  In
-			   unexended Python it will never be triggered
+			   unextended Python it will never be triggered
 			   since its types are not callable.
 			   Ditto: call the bases's *class*, if it has
 			   one.  This makes the same thing possible
diff --git a/Python/codecs.c b/Python/codecs.c
index 27331ab..20791f5 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -146,7 +146,7 @@
     }
 
     /* Convert the encoding to a normalized Python string: all
-       characters are converted to lower case, spaces and hypens are
+       characters are converted to lower case, spaces and hyphens are
        replaced with underscores. */
     v = normalizestring(encoding);
     if (v == NULL)
@@ -427,7 +427,7 @@
 	_PyCodec_SearchCache = PyDict_New();
     if (_PyCodec_SearchPath == NULL || 
 	_PyCodec_SearchCache == NULL)
-	Py_FatalError("can't intialize codec registry");
+	Py_FatalError("can't initialize codec registry");
 }
 
 void _PyCodecRegistry_Fini()
diff --git a/Python/dynload_aix.c b/Python/dynload_aix.c
index 9c6b60a..04e6293 100644
--- a/Python/dynload_aix.c
+++ b/Python/dynload_aix.c
@@ -189,7 +189,7 @@
 	/*
 	-- Invoke load() with L_NOAUTODEFER leaving the imported symbols
 	-- of the shared module unresolved. Thus we have to resolve them
-	-- explicitely with loadbind. The new module is loaded, then we
+	-- explicitly with loadbind. The new module is loaded, then we
 	-- resolve its symbols using the list of already loaded modules
 	-- (only those that belong to the python executable). Get these
 	-- with loadquery(L_GETINFO).
diff --git a/Python/dynload_next.c b/Python/dynload_next.c
index 2d02cc6..a352edc 100644
--- a/Python/dynload_next.c
+++ b/Python/dynload_next.c
@@ -162,7 +162,7 @@
 			return NULL;
 		}
 		if (!NSIsSymbolNameDefined(funcname)) {
-			/* UnlinkModule() isn't implimented in current versions, but calling it does no harm */
+			/* UnlinkModule() isn't implemented in current versions, but calling it does no harm */
 			NSUnLinkModule(newModule, FALSE);
 			PyErr_Format(PyExc_ImportError,
 				     "Loaded module does not contain symbol %.200s",
diff --git a/Python/exceptions.c b/Python/exceptions.c
index 05e318e..b63daee 100644
--- a/Python/exceptions.c
+++ b/Python/exceptions.c
@@ -183,7 +183,7 @@
 {
     PyObject* self = PyTuple_GetItem(args, 0);
     if (!self) {
-	/* Watch out for being called to early in the bootstapping process */
+	/* Watch out for being called to early in the bootstrapping process */
 	if (PyExc_TypeError) {
 	    PyErr_SetString(PyExc_TypeError,
 	     "unbound method must be called with class instance 1st argument");
diff --git a/Python/getargs.c b/Python/getargs.c
index 11754ef..3ed65a3 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -13,7 +13,7 @@
 /* XXX There are several unchecked sprintf or strcat calls in this file.
    XXX The only way these can become a danger is if some C code in the
    XXX Python source (or in an extension) uses ridiculously long names
-   XXX or riduculously deep nesting in format strings. */
+   XXX or ridiculously deep nesting in format strings. */
 
 #include "Python.h"
 
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index afb9589..cc942a3 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -75,7 +75,7 @@
 
 static int initialized = 0;
 
-/* API to access the initialized flag -- useful for eroteric use */
+/* API to access the initialized flag -- useful for esoteric use */
 
 int
 Py_IsInitialized()
diff --git a/Python/strtod.c b/Python/strtod.c
index a0991d5..0673fca 100644
--- a/Python/strtod.c
+++ b/Python/strtod.c
@@ -69,7 +69,7 @@
 	register char *sp, *dp;
 	register int c;
 	char *buforg, *buflim;
-	char buffer[64];		/* 45-digit significand + */
+	char buffer[64];		/* 45-digit significant + */
 					/* 13-digit exponent */
 	sp = str;
 	while (*sp == ' ') sp++;
diff --git a/Python/thread_lwp.h b/Python/thread_lwp.h
index fcfabf5..5d73242 100644
--- a/Python/thread_lwp.h
+++ b/Python/thread_lwp.h
@@ -13,7 +13,7 @@
 #include <lwp/stackdep.h>
 
 #define STACKSIZE	1000	/* stacksize for a thread */
-#define NSTACKS		2	/* # stacks to be put in cache initialy */
+#define NSTACKS		2	/* # stacks to be put in cache initially */
 
 struct lock {
 	int lock_locked;
diff --git a/Python/thread_os2.h b/Python/thread_os2.h
index 2371aae..0709e06 100644
--- a/Python/thread_os2.h
+++ b/Python/thread_os2.h
@@ -122,7 +122,7 @@
     PyThread_init_thread();
 
   DosCreateMutexSem(NULL,  /* Sem name      */
-                    &aLock, /* the semaphone */
+                    &aLock, /* the semaphore */
                     0,     /* shared ?      */
                     0);    /* initial state */  
 
