diff --git a/README b/README
index 9eeca0dd6ab2ea0a20322f8b48b91f4a2b16de29..f32d746bd9ad5cd803bd66007b3c794c3d0bbdbd 100644
--- a/README
+++ b/README
@@ -141,6 +141,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
+Version 2.20b (03/28/2016)
+
+- Fixes to handling of simpleType with and without restrictions on
+  another defined simpleType.  These were not being handled
+  correctly when the name of the simpleType contained a dash.
+  Thanks to Ryku for identifying this problem and for a very helpful
+  description of what was wrong and for providing schemas to
+  reproduce the problem.
+
 Version 2.20a (02/25/2016)
 
 - Another patch for Python 2 and 3.  We needed to protect against
diff --git a/generateDS.html b/generateDS.html
index 22537759fa1e83307072287594cbec1699a47bbb..bf07b0ef8080be09875568b8ce6a649a90e31bd1 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" />
 <title>generateDS -- Generate Data Structures from XML Schema</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20b</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">February 25, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">March 28, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -3171,7 +3171,7 @@ following among others:</p>
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateDS.txt">View document source</a>.
-Generated on: 2016-02-26 00:54 UTC.
+Generated on: 2016-03-28 18:25 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateDS.py b/generateDS.py
index 2d90b8f3589b1265e694359e9b6814db28338a51..3d81eb60b9775802b7d37017b93308cc22728bb2 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -202,7 +202,7 @@ logging.disable(logging.INFO)
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.20a'
+VERSION = '2.20b'
 ##VERSION##
 
 if sys.version_info.major == 2:
@@ -1711,9 +1711,9 @@ class XschemaHandler(handler.ContentHandler):
                 # Save the name of the simpleType, but ignore everything
                 #   else about it (for now).
                 if 'name' in attrs:
-                    stName = cleanupName(attrs['name'])
+                    stName = attrs['name']
                 elif len(self.stack) > 0:
-                    stName = cleanupName(self.stack[-1].getName())
+                    stName = self.stack[-1].getName()
                 else:
                     stName = None
                 # If the parent is an element, mark it as a simpleType.
@@ -3356,7 +3356,7 @@ def generateBuildAttributes(wrt, element, hasAttributes):
         if typeName and typeName in SimpleTypeDict:
             wrt("            self.validate_%s(self.%s)    "
                 "# validate type %s\n" %
-                (typeName, mappedName, typeName, ))
+                (cleanupName(typeName), mappedName, typeName, ))
     if element.getAnyAttribute():
         hasAttributes += 1
         wrt('        self.anyAttributes_ = {}\n')
@@ -3779,11 +3779,11 @@ def generateBuildStandard_1(
         if child.getMaxOccurs() > 1:
             wrt("            # validate type %s\n" % (typeName, ))
             wrt("            self.validate_%s(self.%s[-1])\n" % (
-                typeName, mappedName))
+                cleanupName(typeName), mappedName, ))
         else:
             wrt("            # validate type %s\n" % (typeName, ))
             wrt("            self.validate_%s(self.%s)\n" % (
-                typeName, mappedName, ))
+                cleanupName(typeName), mappedName, ))
 # end generateBuildStandard_1
 
 
@@ -4594,8 +4594,10 @@ def generateValidatorDefs(wrt, element):
         if (typeName and
                 typeName in SimpleTypeDict and
                 typeName not in generatedSimpleTypes):
+            cleanTypeName = cleanupName(typeName)
             generatedSimpleTypes.append(typeName)
-            wrt('    def validate_%s(self, value):\n' % (typeName, ))
+            wrt('    def validate_%s(self, value):\n' % (
+                cleanupName(typeName), ))
             if typeName in SimpleTypeDict:
                 stObj = SimpleTypeDict[typeName]
                 wrt('        # Validate type %s, a restriction '
@@ -4609,15 +4611,15 @@ def generateValidatorDefs(wrt, element):
             if patterns:
                 wrt('            if not self.gds_validate_simple_patterns(\n')
                 wrt('                    self.validate_%s_patterns_, '
-                    'value):\n' % (typeName, ))
+                    'value):\n' % (cleanTypeName, ))
                 s1 = ("                warnings_.warn('Value \"%%s\" "
                       "does not match xsd pattern restrictions: %%s' "
                       "%% (value.encode('utf-8'), "
-                      "self.validate_%s_patterns_, ))\n" % (typeName, )
+                      "self.validate_%s_patterns_, ))\n" % (cleanTypeName, )
                       )
                 wrt(s1)
                 wrt('    validate_%s_patterns_ = %s\n' % (
-                    typeName, patterns, ))
+                    cleanTypeName, patterns, ))
     attrDefs = element.getAttributeDefs()
     for key in element.getAttributeDefsList():
         attrDef = attrDefs[key]
@@ -4625,8 +4627,10 @@ def generateValidatorDefs(wrt, element):
         if (typeName and
                 typeName in SimpleTypeDict and
                 typeName not in generatedSimpleTypes):
+            cleanTypeName = cleanupName(typeName)
             generatedSimpleTypes.append(typeName)
-            wrt('    def validate_%s(self, value):\n' % (typeName, ))
+            wrt('    def validate_%s(self, value):\n' % (
+                cleanupName(typeName), ))
             if typeName in SimpleTypeDict:
                 stObj = SimpleTypeDict[typeName]
                 wrt('        # Validate type %s, a restriction on %s.\n' % (
@@ -4639,15 +4643,15 @@ def generateValidatorDefs(wrt, element):
             if patterns:
                 wrt('            if not self.gds_validate_simple_patterns(\n')
                 wrt('                    self.validate_%s_patterns_, '
-                    'value):\n' % (typeName, ))
+                    'value):\n' % (cleanTypeName, ))
                 s1 = ("                warnings_.warn('Value \"%%s\" "
                       "does not match xsd pattern restrictions: %%s' "
                       "%% (value.encode('utf-8'), "
-                      "self.validate_%s_patterns_, ))\n" % (typeName, )
+                      "self.validate_%s_patterns_, ))\n" % (cleanTypeName, )
                       )
                 wrt(s1)
                 wrt('    validate_%s_patterns_ = %s\n' % (
-                    typeName, patterns, ))
+                    cleanTypeName, patterns, ))
 # end generateValidatorDefs
 
 
@@ -6491,6 +6495,7 @@ def generate(outfileName, subclassFilename, behaviorFilename,
         generateSubclasses(
             root, subclassFilename, behaviorFilename,
             prefix, options, args, superModule)
+# end generate
 
 
 def makeFile(outFileName):
@@ -6714,6 +6719,7 @@ def parseAndGenerate(
                 outfile = open(modulePath, "a")
                 outfile.write(exportLine)
                 outfile.close()
+# end parseAndGenerate
 
 
 # Function that gets called recursively in order to expand nested references
diff --git a/generateDS.txt b/generateDS.txt
index c83f3318524a2c786d2db264bde2f9aa006ae083..504406d53e136d95f18ac4e60eae180a5476441f 100644
--- a/generateDS.txt
+++ b/generateDS.txt
@@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema
 
 .. version
 
-:revision: 2.20a
+:revision: 2.20b
 
 .. version
 
diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py
index 8005633514af658ca1b931a1eab56a3083009721..bd08890ae92192316cc09735d58e7ebbe0bf461f 100755
--- a/gui/generateds_gui.py
+++ b/gui/generateds_gui.py
@@ -31,7 +31,7 @@ from libgenerateDS.gui import generateds_gui_session
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.20a'
+VERSION = '2.20b'
 ##VERSION##
 
 
diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html
index 7ba967b52f7a3106a4c3378bcc9c7cc53447faaf..2bbc82d5573de58fbf769237f7d679111a98d7f4 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" />
 <title>How to package a generateDS.py generated library</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -217,7 +217,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20b</td>
 </tr>
 </tbody>
 </table>
@@ -226,7 +226,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">February 25, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">March 28, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -380,7 +380,7 @@ this command for your needs.  For example, you may need to use
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="librarytemplate_howto.txt">View document source</a>.
-Generated on: 2016-02-26 00:54 UTC.
+Generated on: 2016-03-28 18:25 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt
index 4abf50f23aa2de2199d4923e82cddcbb7a74e281..d90b7677a70fb2d0ce3e833f48b8ac15c7543f69 100644
--- a/librarytemplate_howto.txt
+++ b/librarytemplate_howto.txt
@@ -8,7 +8,7 @@ How to package a generateDS.py generated library
 
 .. version
 
-:revision: 2.20a
+:revision: 2.20b
 
 .. version
 
diff --git a/process_includes.py b/process_includes.py
index c4f5e57ab31f0e939efa32bf26f68f70a3f5c13f..4dcab5a724247a9dc210fe1ff1122dd0757558de 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -40,7 +40,7 @@ except ImportError:
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.20a'
+VERSION = '2.20b'
 ##VERSION##
 
 CatalogDict = {}
diff --git a/setup.py b/setup.py
index 6f9c281f31c6a4dfb811eef578907fce078c366a..9a8f42faff03cc93bf4c2de909b9e1e17a579740 100644
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ setup(name="generateDS",
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-    version="2.20a",
+    version="2.20b",
 ##VERSION##
     author="Dave Kuhlman",
     author_email="dkuhlman@davekuhlman.org",
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index dde286bc104fc9eeccce6e6d295f01581688ff8f..daffbe1e6bee98a624428edf2e8141288efc1a75 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<meta name="generator" content="Docutils 0.13: http://docutils.sourceforge.net/" />
 <title>generateDS -- Introduction and Tutorial</title>
 <meta name="author" content="Dave Kuhlman" />
 <style type="text/css">
@@ -219,7 +219,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20a</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.20b</td>
 </tr>
 </tbody>
 </table>
@@ -228,7 +228,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">February 25, 2016</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">March 28, 2016</td>
 </tr>
 </tbody>
 </table>
@@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_tutorial.txt">View document source</a>.
-Generated on: 2016-02-26 00:54 UTC.
+Generated on: 2016-03-28 18:25 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt
index c2e27d55a9d33565c91acb79eb04f1b3f4b4d93f..291674e4395fcd8a5d896d0999746ba5b94b05e8 100644
--- a/tutorial/generateds_tutorial.txt
+++ b/tutorial/generateds_tutorial.txt
@@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial
 
 .. version
 
-:revision: 2.20a
+:revision: 2.20b
 
 .. version
 
diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip
index ea26f8a381ffe394295bbb216537f991ddfcfd55..46a5c5d8e8421887428115def7fe27484ec50054 100644
Binary files a/tutorial/generateds_tutorial.zip and b/tutorial/generateds_tutorial.zip differ