diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 5d16fa5..5bc9249 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -273,7 +273,7 @@
         # Did the error occur before or after the module was found?
         (exc, value, tb) = info = sys.exc_info()
         if path in sys.modules:
-            # An error occured while executing the imported module.
+            # An error occurred while executing the imported module.
             raise ErrorDuringImport(sys.modules[path].__file__, info)
         elif exc is SyntaxError:
             # A SyntaxError occurred before we could execute the module.
diff --git a/Lib/test/test_dircache.py b/Lib/test/test_dircache.py
index 3f10872..68f6fc2 100644
--- a/Lib/test/test_dircache.py
+++ b/Lib/test/test_dircache.py
@@ -46,7 +46,7 @@
 
         if sys.platform[:3] not in ('win', 'os2'):
             # Sadly, dircache has the same granularity as stat.mtime, and so
-            # can't notice any changes that occured within 1 sec of the last
+            # can't notice any changes that occurred within 1 sec of the last
             # time it examined a directory.
             time.sleep(1)
             self.writeTemp("test1")
diff --git a/Lib/test/test_threadsignals.py b/Lib/test/test_threadsignals.py
index fcae312..51e3d97 100644
--- a/Lib/test/test_threadsignals.py
+++ b/Lib/test/test_threadsignals.py
@@ -21,7 +21,7 @@
     return usr1, usr2, alrm
 
 
-# The signal handler. Just note that the signal occured and
+# The signal handler. Just note that the signal occurred and
 # from who.
 def handle_signals(sig,frame):
     signal_blackboard[sig]['tripped'] += 1
diff --git a/Lib/trace.py b/Lib/trace.py
index f167fcf..799c302 100644
--- a/Lib/trace.py
+++ b/Lib/trace.py
@@ -133,7 +133,7 @@
             # the ignore list
             n = len(mod)
             # (will not overflow since if the first n characters are the
-            # same and the name has not already occured, then the size
+            # same and the name has not already occurred, then the size
             # of "name" is greater than that of "mod")
             if mod == modulename[:n] and modulename[n] == '.':
                 self._ignore[modulename] = 1
diff --git a/Mac/Tools/IDE/Wsocket.py b/Mac/Tools/IDE/Wsocket.py
index eb5936d..82f4df5 100644
--- a/Mac/Tools/IDE/Wsocket.py
+++ b/Mac/Tools/IDE/Wsocket.py
@@ -163,7 +163,7 @@
             def settotal(int total): gets called when the connection knows the data size
             def setcurrent(int current): gets called when some new data has arrived
             def done(): gets called when the transaction is complete
-            def error(type, value, tb): gets called wheneven an error occured
+            def error(type, value, tb): gets called wheneven an error occurred
     """
 
     def __init__(self, settotal_func, setcurrent_func, done_func, error_func):
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index 718c77b..d50ed2e 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -1308,7 +1308,7 @@
         tb_next (frame/None, R/O): next level in stack trace (toward the frame where
                                   the exception occurred)
         tb_frame (frame, R/O): execution frame of the current level
-        tb_lineno (int, R/O): line number where the exception occured
+        tb_lineno (int, R/O): line number where the exception occurred
         tb_lasti (int, R/O): precise instruction (index into bytecode)
 
     Slices:
@@ -1597,7 +1597,7 @@
 maxsplit=0]])
 join(words[, sep=' Concatenate a list or tuple of words with
 '])                interveningseparators; inverse of split.
-replace(s, old,    Returns a copy of string <s> with all occurences of
+replace(s, old,    Returns a copy of string <s> with all occurrences of
 new[, maxsplit=0]  substring<old> replaced by <new>. Limits to <maxsplit>
                    firstsubstitutions if specified.
 strip(s)           Return a string that is (a copy of) <s> without leadingand
@@ -1620,7 +1620,7 @@
 $          matches end of the string (of every line in MULTILINE mode)
 *          0 or more of preceding regular expression (as many as possible)
 +          1 or more of preceding regular expression (as many as possible)
-?          0 or 1 occurence of preceding regular expression
+?          0 or 1 occurrence of preceding regular expression
 *?, +?, ?? Same as *, + and ? but matches as few characters as possible
 {m,n}      matches from m to n repetitions of preceding RE
 {m,n}?     idem, attempting to match as few repetitions as possible
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index db2a690..cac6a2d 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -734,7 +734,7 @@
 
 /* error handling callback helper:
    build arguments, call the callback and check the arguments,
-   if no exception occured, copy the replacement to the output
+   if no exception occurred, copy the replacement to the output
    and adjust various state variables.
    return 0 on success, -1 on error
 */
@@ -2987,7 +2987,7 @@
 
 /* Lookup the character ch in the mapping. If the character
    can't be found, Py_None is returned (or NULL, if another
-   error occured). */
+   error occurred). */
 static PyObject *charmapencode_lookup(Py_UNICODE c, PyObject *mapping)
 {
     PyObject *w = PyInt_FromLong((long)c);
diff --git a/PC/os2emx/dlfcn.c b/PC/os2emx/dlfcn.c
index c9307da..9e88d5e 100644
--- a/PC/os2emx/dlfcn.c
+++ b/PC/os2emx/dlfcn.c
@@ -216,7 +216,7 @@
 	}
 }
 
-/* return a string describing last occured dl error */
+/* return a string describing last occurred dl error */
 char *dlerror()
 {
 	return dlerr;
diff --git a/PC/os2emx/dlfcn.h b/PC/os2emx/dlfcn.h
index c429834..49abecf 100644
--- a/PC/os2emx/dlfcn.h
+++ b/PC/os2emx/dlfcn.h
@@ -45,7 +45,7 @@
 /* free dynamicaly-linked library */
 int dlclose(void *handle);
 
-/* return a string describing last occured dl error */
+/* return a string describing last occurred dl error */
 char *dlerror(void);
 
 #endif /* !_DLFCN_H */
diff --git a/Tools/msi/uisample.py b/Tools/msi/uisample.py
index d66c3cd..2bdf59e 100644
--- a/Tools/msi/uisample.py
+++ b/Tools/msi/uisample.py
@@ -1,3 +1,4 @@
+
 import msilib,os;dirname=os.path.dirname(__file__)
 AdminExecuteSequence = [
 (u'InstallValidate', None, 1400),
@@ -1393,7 +1394,7 @@
 (1932, u'The Windows Installer service cannot update the protected Windows file [2]. {{Package version: [3], OS Protected version: [4], SFP Error: [5]}}'),
 (1933, u'The Windows Installer service cannot update one or more protected Windows files. {{SFP Error: [2].  List of protected files:\\r\\n[3]}}'),
 (1934, u'User installations are disabled via policy on the machine.'),
-(1935, u'An error occured during the installation of assembly component [2]. HRESULT: [3]. {{assembly interface: [4], function: [5], assembly name: [6]}}'),
+(1935, u'An error occurred during the installation of assembly component [2]. HRESULT: [3]. {{assembly interface: [4], function: [5], assembly name: [6]}}'),
 ]
 
 tables=['AdminExecuteSequence', 'AdminUISequence', 'AdvtExecuteSequence', 'BBControl', 'Billboard', 'Binary', 'CheckBox', 'Property', 'ComboBox', 'Control', 'ListBox', 'ActionText', 'ControlCondition', 'ControlEvent', 'Dialog', 'EventMapping', 'InstallExecuteSequence', 'InstallUISequence', 'ListView', 'RadioButton', 'TextStyle', 'UIText', '_Validation', 'Error']
