Issue 2635: fix bug in the fix_sentence_endings option to textwrap.fill.
diff --git a/Lib/test/test_textwrap.py b/Lib/test/test_textwrap.py
index 787153e..c1c09f6 100644
--- a/Lib/test/test_textwrap.py
+++ b/Lib/test/test_textwrap.py
@@ -129,6 +129,10 @@
         expect = ['And she said, "Go to hell!"  Can you believe that?']
         self.check(wrapper.wrap(text), expect)
 
+        text = 'File stdio.h is nice.'
+        expect = ['File stdio.h is nice.']
+        self.check(wrapper.wrap(text), expect)
+
     def test_wrap_short(self):
         # Wrapping to make short lines longer
 
diff --git a/Lib/textwrap.py b/Lib/textwrap.py
index 473b98a..ffbb9d1 100644
--- a/Lib/textwrap.py
+++ b/Lib/textwrap.py
@@ -90,6 +90,7 @@
     sentence_end_re = re.compile(r'[%s]'              # lowercase letter
                                  r'[\.\!\?]'          # sentence-ending punct.
                                  r'[\"\']?'           # optional end-of-quote
+                                 r'\Z'                # end of chunk
                                  % string.lowercase)
 
 
diff --git a/Misc/NEWS b/Misc/NEWS
index c616ba2..9bd4f59 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -43,6 +43,10 @@
 Library
 -------
 
+- Issue #2635: Fix bug in 'fix_sentence_endings' textwrap.fill option,
+  where an extra space was added after a word containing (but not
+  ending in) '.', '!' or '?'.
+
 - Add from_buffer() and from_buffer_copy() class methods to ctypes
   data types