diff --git a/src/dht.cpp b/src/dht.cpp
index 1782f870a681ff534a312e2527fdaf4a4005770a..352cc878e5cb333bc609a4102f6bc9f71db32db6 100644
--- a/src/dht.cpp
+++ b/src/dht.cpp
@@ -143,7 +143,7 @@ struct Dht::Storage {
         return values.empty();
     }
 
-    void clear();
+    std::pair<ssize_t, ssize_t> clear();
 
     size_t valueCount() const {
         return values.size();
@@ -2205,11 +2205,14 @@ Dht::Storage::store(const std::shared_ptr<Value>& value, time_point created, ssi
     }
 }
 
-void
+std::pair<ssize_t, ssize_t>
 Dht::Storage::clear()
 {
+    size_t num_values = values.size();
+    size_t tot_size = total_size;
     values.clear();
     total_size = 0;
+    return std::make_pair(-tot_size, -num_values);
 }
 
 void
@@ -2793,7 +2796,9 @@ Dht::maintainStorage(InfoHash id, bool force, DoneCallback donecb) {
 
     if (not want4 and not want6) {
         DHT_LOG.DEBUG("Discarding storage values %s", id.toString().c_str());
-        local_storage->second.clear();
+        auto diff = local_storage->second.clear();
+        total_store_size += diff.first;
+        total_values += diff.second;
     }
 
     return announce_per_af;