diff --git a/doc/efun/m_values b/doc/efun/m_values
index 4b94154..153aef1 100644
--- a/doc/efun/m_values
+++ b/doc/efun/m_values
@@ -1,14 +1,24 @@
-SYNOPSIS:
-        mixed *m_values(mapping map)
-        mixed *m_values(mapping map, int index)
+SYNOPSIS
+        mixed * m_values(mapping map)
+        mixed * m_values(mapping map, int index)
 
-DESCRIPTION:
-       If index is 0 or not given, return an array with the first values of 
-       mapping 'map'.
-       For values of index >0, return an array with the corresponding higher
-       values of mapping 'map', i.e. m_values(map,2) returns the third 
-       values.
+BESCHREIBUNG
+        Liefert ein Array mit den Werten des Mappings <map>. Wenn <index>
+        angegeben ist, liefert m_values() die Werte der entsprechenden Spalte,
+        sonst die Werte der ersten Spalte.
 
-SEE ALSO:
-       mappingp(E), mkmapping(E), m_indices(E), m_delete(E),
-       sizeof(E), widthof(E), mappings(LPC)
+BEISPIELE
+        mapping m = ([ "bla":1;2;3 , "fasel":4;5;6 , "schnack":7;8;9 ]);
+        m_values(m)    -> liefert ({ 1 , 4 , 7 }) (u.U. permutiert)
+        m_values(m, 0) -> liefert ({ 1 , 4 , 7 }) (ditto)
+        m_values(m, 1) -> liefert ({ 2 , 5 , 8 }) (ditto)
+
+        Die genaue Reihenfolge der Werte im Ergebnisarray ist nicht
+        vorhersagbar, und kann sich mit jeder Aenderung am Mapping aendern.
+        Garantiert ist lediglich, dass die Ergebnisse von m_indices() und
+        m_values(), wenn sie zur selben Zeit bestimmt werden, dieselbe
+        Reihenfolge aufweisen.
+
+SIEHE AUCH
+        mappingp(E), mkmapping(E), m_add(E), m_indices(E), m_delete(E),
+        sizeof(E), widthof(E), unmkmapping(E)
