diff --git a/product/ERP5Type/CachePlugins/BaseCache.py b/product/ERP5Type/CachePlugins/BaseCache.py
index 68807b02c832f5b2d4f95eb051eac80237f8416d..c989d657283a8d0f69d1e34e5f44a03cbb022f19 100644
--- a/product/ERP5Type/CachePlugins/BaseCache.py
+++ b/product/ERP5Type/CachePlugins/BaseCache.py
@@ -49,7 +49,7 @@ class CacheEntry(object):
   def __init__(self, value, cache_duration=None, calculation_time=0):
     self.value = value
     if cache_duration in (None, 0):
-      self.expires_at = None
+      self.expires_at = cache_duration
     else:
       self.expires_at = time() + cache_duration
     self._cache_hit_count = 0
@@ -60,7 +60,7 @@ class CacheEntry(object):
       - None means allways expire
       - 0 means never expire
     """
-    return self.expires_at is None or self.expires_at < time()
+    return self.expires_at is None or self.expires_at != 0 and self.expires_at < time()
 
   def markCacheHit(self, delta=1):
     """ mark a read to this cache entry """