diff --git a/Lib/configparser.py b/Lib/configparser.py
index eb29b02..fb39ac3 100644
--- a/Lib/configparser.py
+++ b/Lib/configparser.py
@@ -637,7 +637,7 @@
         for key, value in section_items:
             if key == "__name__":
                 continue
-            if value is not None:
+            if (value is not None) or (self._optcre == self.OPTCRE):
                 value = delimiter + str(value).replace('\n', '\n\t')
             else:
                 value = ""
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index f43d1d7..a20678d 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -755,6 +755,34 @@
         with self.assertRaises(UnicodeDecodeError):
             cf.read(tricky, encoding='ascii')
 
+
+class Issue7005TestCase(unittest.TestCase):
+    """Test output when None is set() as a value and allow_no_value == False.
+
+    http://bugs.python.org/issue7005
+
+    """
+
+    expected_output = "[section]\noption = None\n\n"
+
+    def prepare(self, config_class):
+        # This is the default, but that's the point.
+        cp = config_class(allow_no_value=False)
+        cp.add_section("section")
+        cp.set("section", "option", None)
+        sio = io.StringIO()
+        cp.write(sio)
+        return sio.getvalue()
+
+    def test_none_as_value_stringified(self):
+        output = self.prepare(configparser.ConfigParser)
+        self.assertEqual(output, self.expected_output)
+
+    def test_none_as_value_stringified_raw(self):
+        output = self.prepare(configparser.RawConfigParser)
+        self.assertEqual(output, self.expected_output)
+
+
 class SortedTestCase(RawConfigParserTestCase):
     dict_type = SortedDict
 
@@ -811,6 +839,7 @@
         SafeConfigParserTestCaseNoValue,
         SafeConfigParserTestCaseTrickyFile,
         SortedTestCase,
+        Issue7005TestCase,
         StrictTestCase,
         CompatibleTestCase,
         )
diff --git a/Misc/NEWS b/Misc/NEWS
index ad6090e..4053dd7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -155,6 +155,9 @@
 Library
 -------
 
+- Issue #7005: Fixed output of None values for RawConfigParser.write and
+  ConfigParser.write.
+
 - Issue #8990: array.fromstring() and array.tostring() get renamed to
   frombytes() and tobytes(), respectively, to avoid confusion.  Furthermore,
   array.frombytes(), array.extend() as well as the array.array()
