diff --git a/servers/slapd/back-bdb/cache.c b/servers/slapd/back-bdb/cache.c
index 66071dccc7c0d180b40862e7584d3898a96a9a6b..e54408d65965515fb1edfc7cc499b294d8cf26f0 100644
--- a/servers/slapd/back-bdb/cache.c
+++ b/servers/slapd/back-bdb/cache.c
@@ -677,8 +677,8 @@ bdb_cache_lru_purge( struct bdb_info *bdb )
 	efree = bdb->bi_cache.c_cursize - bdb->bi_cache.c_maxsize;
 	if ( efree < 1 )
 		efree = 0;
-	else if (efree < bdb->bi_cache.c_minfree )
-		efree = bdb->bi_cache.c_minfree;
+	else 
+		efree += bdb->bi_cache.c_minfree;
 
 	if ( bdb->bi_cache.c_leaves > eimax ) {
 		eifree = bdb->bi_cache.c_minfree * 10;