diff --git a/doc/props/P_MSG_PROB b/doc/props/P_MSG_PROB
index b4465df..216d8e0 100644
--- a/doc/props/P_MSG_PROB
+++ b/doc/props/P_MSG_PROB
@@ -18,18 +18,65 @@
 BESCHREIBUNG
 ============
 
-   Parameter fuer die Wartezeit in Sekunden bis zur naechsten Ausgabe
-   einer Raumnachricht.
-   Wird in AddRoomMessage() explizit mitgesetzt. Koennte natuerlich von
-   einer Nachrichtenmethode auch regelmaessig geaendert werden, um
-   mehr Zufall in die Intervalle zu bringen.
+   Der Name ist irrefuehrend: es ist ein Parameter fuer die Wartezeit
+   in Sekunden bis zur naechsten Ausgabe einer Raumnachricht. Nur
+   direkt nach dem Betreten des Raums wird ein Zufallswert dieser Zahl
+   erstellt.
+
+   Wird in AddRoomMessage() explizit mitgesetzt und gilt fuer den
+   Raum.
+
+   Kann von einer Nachrichtenmethode geaendert werden, um mehr Zufall
+   in die Intervalle zu bringen.
+
+   Werte kleiner als 15 werden bei der Auswertung auf 15 gesetzt.
+   Setzen auf 0 schaltet die Nachrichten nicht ab!
+
+
+BEISPIELE
+=========
+
+   // Beispiel:
+   // Je laenger Spieler im Raum sind, desto langsamer tropft das
+   // Wasser. Wenn der letzte den Raum verlaesst, wird die Zeit
+   // fuer den naechsten Spieler wieder auf den Initialwert gesetzt.
+
+   inherit "/std/room";
+
+   #define START_SPEED 30
+
+   void create() {
+     ::create();
+     AddRoomMessage(({"Das Wasser tropft.\n",
+                      "Ein Tropfen plitscht.\n",
+                      "Tripf tropf macht das Wasser.\n"}),
+                    START_SPEED,
+                    ({"slowdown_speed"}));
+   }
+
+   void slowdown_speed(int msg) {
+     SetProp(P_MSG_PROB, QueryProp(P_MSG_PROB)+10);
+   }
+
+   void exit() {
+     ::exit();
+
+     if(!sizeof(filter(all_inventory(this_object())-({this_player()}),
+                       #'interactive)))
+       SetProp(P_MSG_PROB, START_SPEED);
+   }
 
 
 SIEHE AUCH
 ==========
 
-   LFuns:    AddRoomMessage()
-   Props:    P_ROOM_MSG, P_MSG_PROB
-   Verwandt: call_out()
+   LFuns:
+      *AddRoomMessage()*
 
-2.Feb 2016 Gloinson
+   Props:
+      *P_ROOM_MSG*, *P_FUNC_MSG*
+
+   Verwandt:
+      call_out()
+
+28. Mar 2017 Gloinson
