diff --git a/src/interactive/mqtt_history.rs b/src/interactive/mqtt_history.rs
index 1e028e2..50caac9 100644
--- a/src/interactive/mqtt_history.rs
+++ b/src/interactive/mqtt_history.rs
@@ -114,7 +114,11 @@ impl MqttHistory {
     pub fn count_topics_and_messages_below(&self, topic: &str) -> (usize, usize) {
         let mut topics: usize = 0;
         let mut messages: usize = 0;
-        for (_, id) in self.ids.iter().filter(|(key, _)| key.starts_with(topic)) {
+        for (_, id) in self
+            .ids
+            .iter()
+            .filter(|(key, _)| is_topic_below(topic, key))
+        {
             let node = self.tree.get(*id).unwrap();
             let Topic { history, .. } = node.value();
 
@@ -245,6 +249,13 @@ fn count_works() {
     assert_eq!(messages, 2);
 }
 
+#[test]
+fn total_works() {
+    let example = MqttHistory::example();
+    assert_eq!(example.total_topics(), 4);
+    assert_eq!(example.total_messages(), 5);
+}
+
 #[test]
 fn tree_items_works() {
     let example = MqttHistory::example();