diff --git a/doc/efun/m_values b/doc/efun/m_values
index 153aef1..2d20f86 100644
--- a/doc/efun/m_values
+++ b/doc/efun/m_values
@@ -2,23 +2,23 @@
         mixed * m_values(mapping map)
         mixed * m_values(mapping map, int index)
 
-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.
+DESCRIPTION
+        Returns an array with the values of mapping 'map'.
+        If <index> is given as a number between 0 and the width of
+        the mapping, the values from the given column are returned,
+        else the values of the first column.
 
-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)
+EXAMPLES
+        mapping m = ([ "foo":1;2;3, "bar":4;5;6, "baz":7;8;9 ])
+        m_values(m)     --> returns ({ 1, 4, 7 }) or some permutation thereof
+        m_values(m, 0)  --> returns ({ 1, 4, 7 }) (ditto)
+        m_values(m, 1)  --> returns ({ 2, 8, 9 }) (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.
+        Note that exact order of the values in the resulting arrays is not
+        specified, and may vary after any change to the mapping. The only
+        guarantee given is that if m_indices() and m_values() are taken at the
+        same time, the order of both results is identical.
 
-SIEHE AUCH
-        mappingp(E), mkmapping(E), m_add(E), m_indices(E), m_delete(E),
-        sizeof(E), widthof(E), unmkmapping(E)
+SEE ALSO
+        mappingp(E), mkmapping(E), m_indices(E), m_add(E), m_delete(E),
+        sizeof(E), widthof(E), unmkmapping(E).
