diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 321e79b..bda60dd 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -57,7 +57,7 @@
 "This module provides a simple useful replacement for\n"
 "the StringIO module that is written in C.  It does not provide the\n"
 "full generality of StringIO, but it provides enough for most\n"
-"applications and is especially useful in conjuction with the\n"
+"applications and is especially useful in conjunction with the\n"
 "pickle module.\n"
 "\n"
 "Usage:\n"
diff --git a/Modules/flmodule.c b/Modules/flmodule.c
index 5b88be5..e2aa6a1 100644
--- a/Modules/flmodule.c
+++ b/Modules/flmodule.c
@@ -22,7 +22,7 @@
  * fine but a program with two threads using forms will probably crash (unless
  * the program takes precaution to ensure that only one thread can be in
  * this module at any time). This will have to be fixed some time.
- * (A fix will probably also have to synchronise with the gl module).
+ * (A fix will probably also have to synchronize with the gl module).
  */
 
 #include "Python.h"
diff --git a/Modules/getpath.c b/Modules/getpath.c
index 876bac0..0807fa3 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -92,7 +92,7 @@
  * That's it!
  *
  * Well, almost.  Once we have determined prefix and exec_prefix, the
- * preprocesor variable PYTHONPATH is used to construct a path.  Each
+ * preprocessor variable PYTHONPATH is used to construct a path.  Each
  * relative path on PYTHONPATH is prefixed with prefix.  Then the directory
  * containing the shared library modules is appended.  The environment
  * variable $PYTHONPATH is inserted in front of it all.  Finally, the
diff --git a/Modules/imgfile.c b/Modules/imgfile.c
index 0b9dd54..e1e798f 100644
--- a/Modules/imgfile.c
+++ b/Modules/imgfile.c
@@ -10,7 +10,7 @@
 
 /* IMGFILE module - Interface to sgi libimage */
 
-/* XXX This modele should be done better at some point. It should return
+/* XXX This module should be done better at some point. It should return
 ** an object of image file class, and have routines to manipulate these
 ** image files in a neater way (so you can get rgb images off a greyscale
 ** file, for instance, or do a straight display without having to get the
diff --git a/Modules/md5c.c b/Modules/md5c.c
index e747725..e6e7898 100644
--- a/Modules/md5c.c
+++ b/Modules/md5c.c
@@ -143,7 +143,7 @@
 }
 
 /* MD5 finalization. Ends an MD5 message-digest operation, writing the
-   the message digest and zeroizing the context.
+  the message digest and zeroing the context.
  */
 void
 MD5Final(unsigned char digest[16], MD5_CTX *context)
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 545df2b..e3d5804 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -145,7 +145,7 @@
 straightforward: use the new() to create an md5 object. You can now\n\
 feed this object with arbitrary strings using the update() method, and\n\
 at any point you can ask it for the digest (a strong kind of 128-bit\n\
-checksum, a.k.a. ``fingerprint'') of the contatenation of the strings\n\
+checksum, a.k.a. ``fingerprint'') of the concatenation of the strings\n\
 fed to it so far using the digest() method.\n\
 \n\
 Functions:\n\
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index c3caa22..772e2af 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -701,7 +701,7 @@
    a larger map size, there is no point because all the useful operations
    (len(), slicing(), sequence indexing) are limited by a C int.
 
-   Returns -1 on error, with an apprpriate Python exception raised. On
+   Returns -1 on error, with an appropriate Python exception raised. On
    success, the map size is returned. */
 static int
 _GetMapSize(PyObject *o)
diff --git a/Modules/mpzmodule.c b/Modules/mpzmodule.c
index accd967..d4882c2 100644
--- a/Modules/mpzmodule.c
+++ b/Modules/mpzmodule.c
@@ -1635,8 +1635,8 @@
 static mp_test_error( location )
 	int *location;
 {
-	/* assumptions: *alloc returns address dividable by 4,
-	mpz_* routines allocate in chunks dividable by four */
+	/* assumptions: *alloc returns address divisible by 4,
+	mpz_* routines allocate in chunks divisible by four */
 	fprintf(stderr, "MP_TEST_ERROR: location holds 0x%08d\n", *location );
 	Py_FatalError("MP_TEST_ERROR");
 } /* static mp_test_error() */
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index 27203c3..b5414af 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -66,7 +66,7 @@
                             int index,
                             PyObject* element);
 
-/*  The function below is copyrigthed by Stichting Mathematisch Centrum.  The
+/*  The function below is copyrighted by Stichting Mathematisch Centrum.  The
  *  original copyright statement is included below, and continues to apply
  *  in full to the function immediately following.  All other material is
  *  original, copyrighted by Fred L. Drake, Jr. and Virginia Polytechnic
@@ -2403,7 +2403,7 @@
             res = validate_compound_stmt(tree);
             break;
             /*
-             *  Fundemental statements.
+             *  Fundamental statements.
              */
           case expr_stmt:
             res = validate_expr_stmt(tree);
@@ -2552,7 +2552,7 @@
         else
             res = validate_newline(CHILD(tree, j));
     }
-    /*  This stays in to prevent any internal failues from getting to the
+    /*  This stays in to prevent any internal failures from getting to the
      *  user.  Hopefully, this won't be needed.  If a user reports getting
      *  this, we have some debugging to do.
      */
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 93f9ea9..2cf9881 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1360,7 +1360,7 @@
 \n\
 	path: path of executable file\n\
 	args: tuple or list of arguments\n\
-	env: dictonary of strings mapping to strings";
+	env: dictionary of strings mapping to strings";
 
 static PyObject *
 posix_execve(PyObject *self, PyObject *args)
@@ -1558,7 +1558,7 @@
 	mode: mode of process creation\n\
 	path: path of executable file\n\
 	args: tuple or list of arguments\n\
-	env: dictonary of strings mapping to strings";
+	env: dictionary of strings mapping to strings";
 
 static PyObject *
 posix_spawnve(PyObject *self, PyObject *args)
@@ -1700,7 +1700,7 @@
 #include <libutil.h>
 #else
 /* BSDI does not supply a prototype for the 'openpty' and 'forkpty'
-   functions, eventhough they are included in libutil. */
+   functions, even though they are included in libutil. */
 #include <termios.h>
 extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
 extern int forkpty(int *, char *, struct termios *, struct winsize *);
@@ -3897,7 +3897,7 @@
 /* This is used for fpathconf(), pathconf(), confstr() and sysconf().
  * It maps strings representing configuration variable names to
  * integer values, allowing those functions to be called with the
- * magic names instead of poluting the module's namespace with tons of
+ * magic names instead of polluting the module's namespace with tons of
  * rarely-used constants.  There are three separate tables that use
  * these definitions.
  *
diff --git a/Modules/pypcre.c b/Modules/pypcre.c
index 2f493c0..18b319b 100644
--- a/Modules/pypcre.c
+++ b/Modules/pypcre.c
@@ -493,7 +493,7 @@
 
 caseless = ((re->options | options) & PCRE_CASELESS) != 0;
 
-/* For an anchored pattern, or an unchored pattern that has a first char, or a
+/* For an anchored pattern, or an unanchored pattern that has a first char, or a
 multiline pattern that matches only at "line starts", no further processing at
 present. */
 
@@ -1636,8 +1636,8 @@
           *code++ = (repeat_min & 255);
           }
 
-        /* If the mininum is 1 and the previous item was a character string,
-        we either have to put back the item that got cancelled if the string
+        /* If the minimum is 1 and the previous item was a character string,
+        we either have to put back the item that got canceled if the string
         length was 1, or add the character back onto the end of a longer
         string. For a character type nothing need be done; it will just get
         put back naturally. Note that the final character is always going to
@@ -1649,7 +1649,7 @@
           }
 
         /*  For a single negated character we also have to put back the
-        item that got cancelled. */
+        item that got canceled. */
 
         else if (*previous == OP_NOT) code++;
 
diff --git a/Modules/regexpr.c b/Modules/regexpr.c
index 98fa04c..70b7ee1 100644
--- a/Modules/regexpr.c
+++ b/Modules/regexpr.c
@@ -124,7 +124,7 @@
 	/* Structure to encapsulate the stack. */
 	struct
 	{
-		/* index into the curent page.  If index == 0 and you need
+		/* index into the current page.  If index == 0 and you need
 		 * to pop an item, move to the previous page and set index
 		 * = STACK_PAGE_SIZE - 1.  Otherwise decrement index to
 		 * push a page. If index == STACK_PAGE_SIZE and you need
diff --git a/Modules/regexpr.h b/Modules/regexpr.h
index dd66325..2aee62d 100644
--- a/Modules/regexpr.h
+++ b/Modules/regexpr.h
@@ -119,7 +119,7 @@
 
 int re_search(regexp_t compiled, unsigned char *string, int size, int startpos,
 	      int range, regexp_registers_t regs);
-/* This rearches for a substring matching the regexp.  This returns the
+/* This searches for a substring matching the regexp.  This returns the
  * first index at which a match is found.  range specifies at how many
  * positions to try matching; positive values indicate searching
  * forwards, and negative values indicate searching backwards.  mstop
diff --git a/Modules/resource.c b/Modules/resource.c
index 373e8d2..c0f52cf 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -70,8 +70,8 @@
 		ru.ru_msgsnd,		     /* messages sent */
 		ru.ru_msgrcv,		     /* messages received */
 		ru.ru_nsignals,		     /* signals received */
-		ru.ru_nvcsw,		     /* voluntary context switchs */
-		ru.ru_nivcsw		     /* involuntary context switchs */
+		ru.ru_nvcsw,		     /* voluntary context switches */
+		ru.ru_nivcsw		     /* involuntary context switches */
 		);
 }
 
diff --git a/Modules/rgbimgmodule.c b/Modules/rgbimgmodule.c
index 4b0af22..a883f6a 100644
--- a/Modules/rgbimgmodule.c
+++ b/Modules/rgbimgmodule.c
@@ -553,7 +553,7 @@
  *	represents one pixel.  xsize and ysize specify the dimensions of
  *	the pixel array.  zsize specifies what kind of image file to
  *	write out.  if zsize is 1, the luminance of the pixels are
- *	calculated, and a sinlge channel black and white image is saved.
+ *	calculated, and a single channel black and white image is saved.
  *	If zsize is 3, an RGB image file is saved.  If zsize is 4, an
  *	RGBA image file is saved.
  *
diff --git a/Modules/rotormodule.c b/Modules/rotormodule.c
index 70ba032..6c0aff6 100644
--- a/Modules/rotormodule.c
+++ b/Modules/rotormodule.c
@@ -23,7 +23,7 @@
 ******************************************************************/
 
 /* This creates an encryption and decryption engine I am calling
-   a rotor due to the original design was a harware rotor with
+   a rotor due to the original design was a hardware rotor with
    contacts used in Germany during WWII.
 
 Rotor Module:
@@ -43,7 +43,7 @@
 NOTE: the {en,de}cryptmore() methods use the setup that was
       established via the {en,de}crypt calls. They will NOT
       re-initalize the rotors unless: 1) They have not been
-      initalized with {en,de}crypt since the last setkey() call;
+      initialized with {en,de}crypt since the last setkey() call;
       2) {en,de}crypt has not been called for this rotor yet.
 
 NOTE: you MUST use the SAME key in rotor.newrotor()
@@ -209,7 +209,7 @@
 }
 
 
-/* These routines impliment the rotor itself */
+/* These routines implement the rotor itself */
 
 /*  Here is a fairly sophisticated {en,de}cryption system.  It is based on
     the idea of a "rotor" machine.  A bunch of rotors, each with a
@@ -217,7 +217,7 @@
     after encrypting one character.  The current state of the rotors is
     used to encrypt one character.
 
-    The code is smart enought to tell if your alphabet has a number of
+    The code is smart enough to tell if your alphabet has a number of
     characters equal to a power of two.  If it does, it uses logical
     operations, if not it uses div and mod (both require a division).
 
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 612d0d3..62a17a3 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -167,7 +167,7 @@
 joinfields(list [,sep]) -> string\n\
 \n\
 Return a string composed of the words in list, with\n\
-intervening occurences of sep.  Sep defaults to a single\n\
+intervening occurrences of sep.  Sep defaults to a single\n\
 space.\n\
 \n\
 (join and joinfields are synonymous)";
@@ -1040,10 +1040,10 @@
 /*
    mymemreplace
 
-   Return a string in which all occurences of PAT in memory STR are
+   Return a string in which all occurrences of PAT in memory STR are
    replaced with SUB.
 
-   If length of PAT is less than length of STR or there are no occurences
+   If length of PAT is less than length of STR or there are no occurrences
    of PAT in STR, then the original string is returned. Otherwise, a new
    string is allocated here and returned.
 
diff --git a/Modules/sunaudiodev.c b/Modules/sunaudiodev.c
index 5ef2c06..d4e5ec9 100644
--- a/Modules/sunaudiodev.c
+++ b/Modules/sunaudiodev.c
@@ -258,7 +258,7 @@
 		PyErr_SetFromErrno(SunAudioError);
 		return NULL;
 	}
-	/* x_ocount is in bytes, wheras play.samples is in frames */
+	/* x_ocount is in bytes, whereas play.samples is in frames */
 	/* we want frames */
 	return PyInt_FromLong(self->x_ocount / (ai.play.channels *
 						ai.play.precision / 8) -
diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
index a9891c4..2381ff8 100644
--- a/Modules/syslogmodule.c
+++ b/Modules/syslogmodule.c
@@ -36,7 +36,7 @@
   - Changed arg parsing to use PyArg_ParseTuple.
   - Added PyErr_Clear() call(s) where needed.
   - Fix core dumps if user message contains format specifiers.
-  - Change openlog arg defaults to match normal syslog behaviour.
+  - Change openlog arg defaults to match normal syslog behavior.
   - Plug memory leak in openlog().
   - Fix setlogmask() to return previous mask value.
 
diff --git a/Modules/tclNotify.c b/Modules/tclNotify.c
index 429416e..422c944 100644
--- a/Modules/tclNotify.c
+++ b/Modules/tclNotify.c
@@ -119,7 +119,7 @@
  *	None.
  *
  * Side effects:
- *	Clears the notifier intialization flag.
+ *	Clears the notifier initialization flag.
  *
  *----------------------------------------------------------------------
  */
@@ -202,7 +202,7 @@
  *	None.
  *
  * Side effects:
- *	The given event source is cancelled, so its procedure will
+ *	The given event source is canceled, so its procedure will
  *	never again be called.  If no such source exists, nothing
  *	happens.
  *
