diff --git a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
index 3ec9e81f8beeef91cd6f0ae0ff1bd6d06e7a2b49..97e73bc07d7b1001a9a2c0ddd762041801d207c8 100644
--- a/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
+++ b/ring-android/app/src/main/java/cx/ring/adapters/ConversationAdapter.java
@@ -939,7 +939,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<ConversationViewHo
             }
             Interaction nextMsg = getNextMessageFromPosition(i);
             if (nextMsg != null) {
-                if (isSeqBreak(msg, nextMsg)) {
+                if (isSeqBreak(msg, nextMsg) || hasPermanentTimeString(nextMsg, i + 1)) {
                     return SequenceType.SINGLE;
                 } else {
                     return SequenceType.FIRST;
@@ -958,12 +958,13 @@ public class ConversationAdapter extends RecyclerView.Adapter<ConversationViewHo
         Interaction prevMsg = getPreviousMessageFromPosition(i);
         Interaction nextMsg = getNextMessageFromPosition(i);
         if (prevMsg != null && nextMsg != null) {
-            if (((isSeqBreak(msg, prevMsg) || isTimeShown) && !isSeqBreak(msg, nextMsg))) {
+            boolean nextMsgHasTime = hasPermanentTimeString(nextMsg, i + 1);
+            if (((isSeqBreak(msg, prevMsg) || isTimeShown) && !(isSeqBreak(msg, nextMsg) || nextMsgHasTime))) {
                 return SequenceType.FIRST;
             } else if (!isSeqBreak(msg, prevMsg) && !isTimeShown && isSeqBreak(msg, nextMsg)) {
                 return SequenceType.LAST;
             } else if (!isSeqBreak(msg, prevMsg) && !isTimeShown && !isSeqBreak(msg, nextMsg)) {
-                return SequenceType.MIDDLE;
+                return nextMsgHasTime ? SequenceType.LAST : SequenceType.MIDDLE;
             }
         }
         return SequenceType.SINGLE;