diff -urN Zope-2.9.1.orig/Dependencies/Shared-Zope-2.9.1/Shared/DC/xml/ppml.py Zope-2.9.1/Dependencies/Shared-Zope-2.9.1/Shared/DC/xml/ppml.py
--- Zope-2.9.1.orig/Dependencies/Shared-Zope-2.9.1/Shared/DC/xml/ppml.py	2006-03-15 17:11:00.000000000 +0100
+++ Zope-2.9.1/Dependencies/Shared-Zope-2.9.1/Shared/DC/xml/ppml.py	2006-03-25 21:31:25.183545415 +0100
@@ -414,14 +414,14 @@
     def load_binput(self):
         i = mloads('i' + self.read(1) + '\000\000\000')
         last = self.stack[-1]
-        if getattr(last, 'id', last) is not last:
+        if getattr(last, 'id', last) is last:
             last.id = self.idprefix + `i`
     dispatch[BINPUT] = load_binput
 
     def load_long_binput(self):
         i = mloads('i' + self.read(4))
         last = self.stack[-1]
-        if getattr(last, 'id', last) is not last:
+        if getattr(last, 'id', last) is last:
             last.id = self.idprefix + `i`
     dispatch[LONG_BINPUT] = load_long_binput
 
@@ -643,10 +643,10 @@
         'pickle': lambda self, tag, attrs: [tag, attrs],
         }
     end_handlers={
-        'pickle': lambda self, tag, data: data[2]+'.',
+        'pickle': lambda self, tag, data: str(data[2])+'.',
         'none': lambda self, tag, data: 'N',
         'int': save_int,
-        'long': lambda self, tag, data: 'L'+data[2]+'L\012',
+        'long': lambda self, tag, data: 'L'+str(data[2])+'L\012',
         'float': save_float,
         'string': save_string,
         'reference': save_reference,
