diff --git a/src/callback.hpp b/src/callback.hpp
index 06df910..1d248bd 100644
--- a/src/callback.hpp
+++ b/src/callback.hpp
@@ -100,9 +100,9 @@
 /** @class GroupOfCallbacks
  *  @brief Invoke multiple callbacks.
  *
- *  A group of callbacks is implemented as a vector of array indicies
+ *  A group of callbacks is implemented as a vector of array indices
  *  into an external array  of callbacks.  The group function call
- *  operator traverses the vector of indicies, invoking each
+ *  operator traverses the vector of indices, invoking each
  *  callback.
  *
  *  @tparam CallbackAccess - Access to the array of callbacks.
@@ -175,7 +175,7 @@
  *  Deferrable callbacks wait a configurable period before
  *  invoking their associated callback.
  *
- *  When the callback condition is initally met, start a timer.  If the
+ *  When the callback condition is initially met, start a timer.  If the
  *  condition is tested again before the timer expires and it is not
  *  met cancel the timer.  If the timer expires invoke the associated
  *  callback.
diff --git a/src/pdmgen.py b/src/pdmgen.py
index 3691d59..693b149 100755
--- a/src/pdmgen.py
+++ b/src/pdmgen.py
@@ -266,7 +266,7 @@
         super(Path, self).factory(objs)
 
     def setup(self, objs):
-        '''Resolve path and metadata names to indicies.'''
+        '''Resolve path and metadata names to indices.'''
 
         self.path = get_index(
             objs, 'pathname', self.name['path'])
@@ -318,7 +318,7 @@
         super(Property, self).factory(objs)
 
     def setup(self, objs):
-        '''Resolve interface, property and metadata to indicies.'''
+        '''Resolve interface, property and metadata to indices.'''
 
         self.interface = get_index(
             objs, 'interface', self.name['interface'])
@@ -337,7 +337,7 @@
         super(Instance, self).__init__(**kw)
 
     def setup(self, objs):
-        '''Resolve elements to indicies.'''
+        '''Resolve elements to indices.'''
 
         self.interface = get_index(
             objs, 'interface', self.name['property']['interface'])
@@ -942,7 +942,7 @@
         # is just an array index.
         #
         # At this point all objects have been created but references
-        # have not been resolved to array indicies.  Instruct objects
+        # have not been resolved to array indices.  Instruct objects
         # to do that now.
         for cls, items in objs.items():
             for obj in items:
diff --git a/src/test/propertywatchgentest.cpp b/src/test/propertywatchgentest.cpp
index afd9dbc..5973f92 100644
--- a/src/test/propertywatchgentest.cpp
+++ b/src/test/propertywatchgentest.cpp
@@ -62,7 +62,7 @@
 
 TEST(PropertyWatchGenTest, IndiciesSameSize)
 {
-    ASSERT_EQ(sizeof(expectedIndicies), sizeof(indicies));
+    ASSERT_EQ(sizeof(expectedIndicies), sizeof(indices));
 }
 
 TEST(PropertyWatchGenTest, WatchesSameSize)
@@ -85,7 +85,7 @@
     size_t i;
     for (i = 0; i < expectedIndicies.size(); ++i)
     {
-        ASSERT_EQ(indicies[i],
+        ASSERT_EQ(indices[i],
                   expectedIndicies[i]);
     }
 }
diff --git a/src/test/templates/callbackgentest.mako.hpp b/src/test/templates/callbackgentest.mako.hpp
index f387c23..44a02a4 100644
--- a/src/test/templates/callbackgentest.mako.hpp
+++ b/src/test/templates/callbackgentest.mako.hpp
@@ -1,6 +1,6 @@
 auto storageCount = ${len(instances)};
 
-const std::array<Index, ${len(instancegroups)}> indicies = {{
+const std::array<Index, ${len(instancegroups)}> indices = {{
 % for g in instancegroups:
     {
     % for i in g.members:
diff --git a/src/test/templates/propertywatchgentest.mako.hpp b/src/test/templates/propertywatchgentest.mako.hpp
index ac4dbee..4fe3be8 100644
--- a/src/test/templates/propertywatchgentest.mako.hpp
+++ b/src/test/templates/propertywatchgentest.mako.hpp
@@ -1,6 +1,6 @@
 auto storageCount = ${len(instances)};
 
-const std::array<Index, ${len(instancegroups)}> indicies = {{
+const std::array<Index, ${len(instancegroups)}> indices = {{
 % for g in instancegroups:
     {
     % for i in g.members:
diff --git a/src/test/yaml/callbackgentest/one.yaml b/src/test/yaml/callbackgentest/one.yaml
index fa2b814..abd1602 100644
--- a/src/test/yaml/callbackgentest/one.yaml
+++ b/src/test/yaml/callbackgentest/one.yaml
@@ -1,7 +1,7 @@
 # Validate two callbacks that share an index
 # and a single callback with its own index.
 #
-# Expecting three callbacks pointing at two indicies.
+# Expecting three callbacks pointing at two indices.
 
 - name: test path group 1
   class: group
diff --git a/src/test/yaml/callbackgentest/two.yaml b/src/test/yaml/callbackgentest/two.yaml
index 1f61e3b..f7f1d8f 100644
--- a/src/test/yaml/callbackgentest/two.yaml
+++ b/src/test/yaml/callbackgentest/two.yaml
@@ -1,4 +1,4 @@
-# Validate the same callback name works in differnt config files.
+# Validate the same callback name works in different config files.
 
 - name: test path group 1
   class: group
