diff --git a/Lib/encodings/idna.py b/Lib/encodings/idna.py
index 62aa450..37462db 100644
--- a/Lib/encodings/idna.py
+++ b/Lib/encodings/idna.py
@@ -150,10 +150,16 @@
             raise UnicodeError, "unsupported error handling "+errors
 
         result = []
-        for label in dots.split(input):
+        labels = dots.split(input)
+        if labels and len(labels[-1])==0:
+            trailing_dot = '.'
+            del labels[-1]
+        else:
+            trailing_dot = ''
+        for label in labels:
             result.append(ToASCII(label))
         # Join with U+002E
-        return ".".join(result), len(input)
+        return ".".join(result)+trailing_dot, len(input)
 
     def decode(self,input,errors='strict'):
 
@@ -168,11 +174,17 @@
             unicode(input, "ascii")
             labels = input.split(".")
 
+        if labels and len(labels[-1]) == 0:
+            trailing_dot = u'.'
+            del labels[-1]
+        else:
+            trailing_dot = u''
+
         result = []
         for label in labels:
             result.append(ToUnicode(label))
 
-        return u".".join(result), len(input)
+        return u".".join(result)+trailing_dot, len(input)
 
 class StreamWriter(Codec,codecs.StreamWriter):
     pass
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index 8e1f0b1..6e40b9f 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -524,6 +524,10 @@
         # * strict decoding testing for all of the
         #   UTF8_ERROR cases in PyUnicode_DecodeUTF8
 
+    def test_codecs_idna(self):
+        # Test whether trailing dot is preserved
+        self.assertEqual(u"www.python.org.".encode("idna"), "www.python.org.")
+
     def test_codecs_errors(self):
         # Error handling (encoding)
         self.assertRaises(UnicodeError, u'Andr\202 x'.encode, 'ascii')
