diff --git a/doc/pcmd/tmhist b/doc/pcmd/tmhist
index d5f6cf6..9faa890 100644
--- a/doc/pcmd/tmhist
+++ b/doc/pcmd/tmhist
@@ -7,6 +7,8 @@
     tmhist aus
     tmhist namen
     tmhist ein
+    tmhist langlebig
+    tmhist loeschen
     tmhist <spielername>
     tmhist <nr>
 
@@ -14,17 +16,23 @@
     Ohne Argument wird die aktuelle Teile-mit-History ausgegeben.
     'tmhist aus' schaltet die Speicherung komplett aus,
     'tmhist namen' speichert nur die Namen der Gespraechspartner und einige
-    statistische Daten.
+       statistische Daten.
     'tmhist ein' speichert Namen der Gespraechspartner sowie die Inhalte der
-    Gespraeche.
+       Gespraeche.
+    'tmhist langlebig' speichert auch ueber 'schlafe ein' hinaus.
+    'tmhist loeschen' loescht den aktuellen Inhalt der History, speichert
+       aber weiterhin ankommende TMs.
     'tmhist <name>' gibt das Gespraech mit dem angegebenen Spieler wieder,
-    sofern so ein Gespraech existiert und der Inhalt gespeichert wurde.
+       sofern so ein Gespraech existiert und der Inhalt gespeichert wurde.
     'tmhist <nr>' gibt das Gespraech mit der Nummer <nr> in der History
-    wieder.
+       wieder.
 
-    Die Gespraechsinhalte werden beim Ausloggen mittels 'schlafe ein'
-    innerhalb von ca. 4s geloescht, bei 'ende' sofort. Bricht die Verbindung
-    zum MorgenGrauen ab, werden die Gespraechsinhalte nach 15min geloescht.
+    Wenn die Teile-mit-History auf "langlebig" geschaltet wird, bleibt sie
+    auch nach einem 'schlafe ein' oder einem Verbindungsabbruch (aber nicht
+    nach 'ende') erhalten. Ansonsten werden die Gespraechsinhalte beim
+    Ausloggen mittels 'schlafe ein' innerhalb von ca. 4s geloescht, bei 
+    'ende' sofort und bei Abbruch der Verbindung zum MorgenGrauen nach ca.
+    15min geloescht.
     Es werden max. 20 Gespraeche mit jeweils max. 50 Nachrichten gespeichert.
 
     Alle mit dem Befehl 'rfluester' mitgeteilten Mitteilungen werden nicht
@@ -35,4 +43,4 @@
     ignoriere, kobold, muds, senderwiederholung, klingelton, teile, rfluestere
 
  LETZTE AeNDERUNG:
-    Sa, 09.08.2008, Zesstra
+    14.02.2022, Zesstra
diff --git a/std/player/base.c b/std/player/base.c
index e39f33a..7b3b42a 100644
--- a/std/player/base.c
+++ b/std/player/base.c
@@ -3466,7 +3466,7 @@
 
   say(capitalize(name(WER))+" hat gerade die Verbindung zu "MUDNAME" gekappt.\n");
   remove_interactive(ME);
-  call_out(#'clear_tell_history,4);
+  call_out(#'clear_tell_history, 4, 0);
   return 1;
 }
 
diff --git a/std/player/comm.c b/std/player/comm.c
index 7025a86..312f7e5 100644
--- a/std/player/comm.c
+++ b/std/player/comm.c
@@ -650,10 +650,10 @@
     ReceiveMsg(sprintf(
       "\nadd_to_tell_history(): got bad uid argument %O."
       "sent: %d, recv: %d, flags: %d, msg: %s", 
-      uid, sent, recv, flags, message),MT_DEBUG|MSG_BS_LEAVE_LFS,0,0,ME);              
+      uid, sent, recv, flags, message),MT_DEBUG|MSG_BS_LEAVE_LFS,0,0,ME);
   }
 
-  // letzten Gespraechspartner fuer erwidere.
+  // Gespraechspartner fuer erwidere auch ohne tmhist speichern.
   if (flags & (MSGFLAG_TELL|MSGFLAG_RTELL))
     last_comm_partner = uid;
 
@@ -677,6 +677,7 @@
     }
   }
 
+  // mit eingeschalteter History weitere Details speichern.
   if (!tell_history_enabled)
     return;
 
@@ -718,6 +719,7 @@
     chat->recvcount += recv;
   }
 
+  // ggf. auch INhalte von Gespraechen speichern
   if (tell_history_enabled < TELLHIST_ENABLED)
     return;
 
@@ -743,21 +745,18 @@
   msg->timestamp = time();
 }
 
-protected void clear_tell_history()
+protected void clear_tell_history(int force)
 {
   /* Nach einem "schlafe ein" werden die gespeicherten Mitteilungen geloescht,
      sofern der Spieler nichts abweichendes eingestellt hat. */
 
-#ifdef TELLHIST_LONGLIFE
-  if (tell_history_enabled == TELLHIST_LONGLIFE)
-    return;
-#endif
-
-  foreach (string uid, struct chat_s chat: tell_history)
-    if (pointerp(chat->msgbuf)) {
-      chat->msgbuf = 0;
-      chat->ptr = 0;
-    }
+  // bei manuellem Loeschen (force==1) immer loeschen, ansonsten nur, wenn die
+  // History nicht "long-life" ist.
+  if (tell_history_enabled < TELLHIST_LONGLIFE || force)
+  {
+    tell_history = ([]);
+    commreceivers = ({});
+  }
 }
 
 protected void reset(void)
@@ -767,7 +766,7 @@
      wie bei einem "schlafe ein" die Mitteilungen geloescht. */
 
   if (!interactive())
-    clear_tell_history();
+    clear_tell_history(0);
 
 }
 
@@ -1657,12 +1656,21 @@
     tell_history_enabled = TELLHIST_DISABLED;
     write("Ok, es wird nichts mehr gespeichert.\n");
     if (sizeof(tell_history)) {
-      tell_history = ([]);
-      commreceivers = ({});
+      clear_tell_history(1);
       write("Deine Mitteilungsgeschichte wurde geloescht.\n");
     }
     return 1;
   }
+  if (str == "loeschen")
+  {
+    if (sizeof(tell_history)) {
+      clear_tell_history(1);
+      write("Deine Mitteilungsgeschichte wurde geloescht.\n");
+    }
+    else
+      write("Deine Mitteilungsgeschichte war schon leer.\n");
+    return 1;
+  }
 
   if (str == "namen") {
     int flag;
@@ -1685,14 +1693,12 @@
     return 1;
   }
 
-#ifdef TELLHIST_LONGLIFE
   if (str == "langlebig") {
     tell_history_enabled = TELLHIST_LONGLIFE;
     write("Ok, zukuenftige Mitteilungen werden jeweils bis zum naechsten "
           "Ende/Crash/\nReboot gespeichert.\n");
     return 1;
   }
-#endif
 
   if (str == "status") {
     switch (tell_history_enabled) {
@@ -1705,12 +1711,10 @@
       case TELLHIST_ENABLED:
         write("Deine Mitteilungen werden gespeichert.\n");
         break;
-#ifdef TELLHIST_LONGLIFE
       case TELLHIST_LONGLIFE:
         write("Deine Mitteilungen werden jeweils bis zum naechsten Ende/"
               "Crash/Reboot\ngespeichert.\n");
         break;
-#endif
     }
     return 1;
   }
