diff --git a/product/ERP5Type/patches/WorkflowTool.py b/product/ERP5Type/patches/WorkflowTool.py
index a26f7ea8d42d2b1f87816e5b2de9058a828666ec..29fbe9ec7c0a618e24c13f5408ac02d66302f8d1 100644
--- a/product/ERP5Type/patches/WorkflowTool.py
+++ b/product/ERP5Type/patches/WorkflowTool.py
@@ -631,8 +631,10 @@ class WorkflowHistoryList(Persistent):
         if index == -1:
             return self._slots[-1]
         elif isinstance(index, (int, long)):
-            # XXX this implementation is not so good, but rarely used.
-            return tuple(self)[index]
+            iterator = self.__iter__()
+            for i in xrange(index):
+                iterator.next()
+            return iterator.next()
         elif isinstance(index, slice):
             return self.__class__((self[x] for x in
                                    xrange(*index.indices(len(self)))))