diff --git a/doc/efun/map_indices b/doc/efun/map_indices
index 7aacc04..fe96419 100644
--- a/doc/efun/map_indices
+++ b/doc/efun/map_indices
@@ -1,33 +1,31 @@
-VERALTET
 SYNOPSIS
-        mapping map_indices(mapping m, string fun, string|object ob,
-                                                     mixed extra, ...)
-        mapping map_indices(mapping m, closure cl, mixed extra, ...)
+        mapping map_indices(mapping m, string func, string|object ob, ...)
+        mapping map_indices(mapping m, closure cl, ...)
 
-BESCHREIBUNG
-        Fuer jedes Element des Mappings wird ob->func() bzw. die Closure <cl>
-        aufgerufen. Dabei wird zuerst der Key des Mappings, dann das
-        Datenelement und schliesslich die <extra> Argumente uebergeben.
-        Die <extra> Argumente duerfen keine geschuetzten Referenzen wie z.B.
-        &(i[0]) enthaelten. Der Dateneintrag im Mapping wird durch den
-        Rueckgabewert der Funktion ersetzt. <ob> kann auch der Dateiname
-        eines Objektes sein.
+DESCRIPTION
+        ob->func() is called resp. cl applied to every element in the mapping,
+        with the key of the element as first argument, and then the extra args
+        that were given to map_indices (these args must not be protected
+        references like &(i[0])).  The data item in the mapping is replaced by
+        the return value of the function. ob can also be a file_name of an
+        object.
 
-        Wird <ob> nicht angegeben oder weder ein String noch ein Objekt,
-        wird standardmaessig this_object() verwendet.
+        If <ob> is omitted, or neither a string nor an object, it
+        defaults to this_object().
 
-        Verfuegt das Mapping ueber mehr als ein Datenelement pro Key, so
-        wird nur das erste Element beachtet, alle andern Datenelemente
-        werden ignoriert. Das Verhalten von map_indices() unterscheidet sich
-        also vom Verhalten von map_array().
+        Note that if mapping m has more than one value per key, these
+        are ignored: the resulting mapping always has one value per key.
 
-BEISPIELE
+        Also note that the behaviour of this function is different from
+        map(<array>).
+
+EXAMPLES
         m = mkmapping(users());
-        m = map_indices(m, #'envrionment);
+        m = map_indices(m, #'environment);
 
-GESCHICHTE
-        In LDMud 3.2.6 umbenannt von map_mapping() und durch map() ergaenzt.
+HISTORY
+        In LDMud 3.2.6 renamed from map_mapping() and complemented by map().
 
-SIEHE AUCH
+SEE ALSO
         map(E), filter(E), filter_indices(E), walk_mapping(E), member(E),
         m_contains(E)
