diff --git a/keyserver/src/fetchers/message-fetchers.js b/keyserver/src/fetchers/message-fetchers.js
--- a/keyserver/src/fetchers/message-fetchers.js
+++ b/keyserver/src/fetchers/message-fetchers.js
@@ -461,7 +461,9 @@
   if (criteria.newerThan) {
     globalTimeFilter = SQL`m.time > ${criteria.newerThan}`;
   } else if (!criteria.threadCursors && shouldApplyTimeFilter) {
-    globalTimeFilter = SQL`m.time > ${minMessageTime}`;
+    globalTimeFilter = SQL`
+      (m.time > ${minMessageTime} OR m.id = mm.last_message)
+    `;
   }
 
   const threadConditions = [];
@@ -470,7 +472,9 @@
     shouldApplyTimeFilter &&
     !globalTimeFilter
   ) {
-    threadConditions.push(SQL`(mm.role > 0 AND m.time > ${minMessageTime})`);
+    threadConditions.push(SQL`
+      (mm.role > 0 AND (m.time > ${minMessageTime} OR m.id = mm.last_message))
+    `);
   } else if (criteria.joinedThreads === true) {
     threadConditions.push(SQL`mm.role > 0`);
   }