Backport r59688.
diff --git a/Lib/plat-mac/plistlib.py b/Lib/plat-mac/plistlib.py
index 49bd556..e61c4a4 100644
--- a/Lib/plat-mac/plistlib.py
+++ b/Lib/plat-mac/plistlib.py
@@ -240,8 +240,8 @@
                 self.simpleElement("true")
             else:
                 self.simpleElement("false")
-        elif isinstance(value, int):
-            self.simpleElement("integer", str(value))
+        elif isinstance(value, (int, long)):
+            self.simpleElement("integer", "%d" % value)
         elif isinstance(value, float):
             self.simpleElement("real", repr(value))
         elif isinstance(value, dict):
diff --git a/Misc/NEWS b/Misc/NEWS
index f4b98de..08181e6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -53,6 +53,8 @@
 Library
 -------
 
+- Bug #1687: Fixed plistlib.py restricts <integer> to Python int when writing.
+
 - Issue #1182: many arithmetic bugs in the decimal module have been
   fixed, and the decimal module has been updated to comply with the
   latest IBM Decimal Arithmetic specification (version 1.66) and