diff --git a/doc/efun/next_bit b/doc/efun/next_bit
index b96f539..56805aa 100644
--- a/doc/efun/next_bit
+++ b/doc/efun/next_bit
@@ -1,22 +1,21 @@
 SYNOPSIS
-        int next_bit(string str, int start)
-        int next_bit(string str, int start, int find_cleared)
+        int next_bit (string str, int start)
+        int next_bit (string str, int start, int find_cleared)
 
-BESCHREIBUNG
-        Liefert den Zahlenwert des naechsten Bits im Bitstring <bit> nach
-        der Position <start>. Gewoehnlich ist dies das naechste gesetzte
-        Bit, aber wenn <find_cleared> angegeben und nicht 0 ist, wird
-        die Postion des naechsten geloeschten Bits zurueck gegeben.
+DESCRIPTION
+        Return the number of the next bit in bitstring <str> after position
+        <start>. Usually this is the next set bit, but if <find_cleared>
+        is given and not 0, the position of the next cleared bit is returned.
 
-        Dabei ist das Finden von geloeschten Bits nach dem letzten gesetzten
-        Bit auf die tatsaechliche Laenge von <str> beschraenkt.
+        Note that finding cleared bits after the last set bit is limited to
+        the actual length of <str>.
 
-        Jedes Zeichen enthaelt 6 Bits. In jedem Zeichen kann deshalb eine
-        Zahl von 0 bis 63 gespeichert werde (2^6=64). Das erste Zeichen
-        ist der Leerschlag " " mit dem Wert 0. Das erste Zeichen im String
-        ist jenes mit den niedrigsten Bits (0-5).
+        Each character contains 6 bits. So you can store a value
+        between 0 and 63 in one character (2^6=64). Starting character
+        is the blank " " which has the value 0. The first character in
+        the string is the one with the lowest bits (0-5).
 
-BEISPIELE
+EXAMPLES
         string s;
         int p;
 
@@ -25,8 +24,8 @@
         for (p = -1; -1 != (p = next_bit(s, p); )
             write(p+"\n");
 
-        --> das gibt 2 und 4 aus.
+        --> will write 2 and 4
 
-SIEHE AUCH
+SEE ALSO
         set_bit(E), clear_bit(E), test_bit(E), last_bit(E), count_bits(E),
         and_bits(E), or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
