diff --git a/doc/efun/copy_bits b/doc/efun/copy_bits
index c3a8eb2..f103855 100644
--- a/doc/efun/copy_bits
+++ b/doc/efun/copy_bits
@@ -1,41 +1,42 @@
 SYNOPSIS
-        string copy_bits(string src, string dest [, int srcstart
-            [, int deststart [, int copylen]]])
+        string copy_bits(string src, string dest
+                         [, int srcstart [, int deststart [, int copylen ]]])
 
-BESCHREIBUNG
-        Kopiert den Bitbereich [<srcstart> .. <srcstart> + <copylen>] aus dem
-        Bitstring <src> in den Bitstring <dest> beginnend an der Position
-        <deststart>. Die alten Werte von <dest> werden dabei ueberschrieben.
+DESCRIPTION
+        Copy the bitrange [<srcstart>..<srcstart>+<copylen>[ from
+        bitstring <src> and copy it into the bitstring <dest> starting
+        at <deststart>, overwriting the original bits at those positions.
 
-        Der resultierende String wird zurueck geliefert, die beiden
-        Originalstrings bleiben unbeeinflusst.
+        The resulting combined string is returned, the input strings remain
+        unaffected.
 
-        Wird <srcstart> nicht angegeben, wird <src> von Anfang an kopiert.
-        Ist <srcstart> negativ, wird vom letzten Bit her gezaehlt (d.h. -1
-        bezeichnet das letzte Bit).
+        If <srcstart> is not given, <src> is copied from the start.
+        If <srcstart> is negative, it is counted from one past the last set
+        bit in the string (ie. '-1' will index the last set bit).
 
-        Wird <deststart> nicht angegeben, wird <dest> von Anfang an kopiert.
-        Ist <deststart> negativ, wird vom letzten Bit her gezaehlt (d.h. -1
-        bezeichnet das letzte Bit).
+        If <deststart> is not given, <dest> will be overwritten from the start.
+        If <deststart> is negative, it is counted from one past the last set
+        bit in the string (ie. '-1' will index the last set bit).
 
-        Wird <copylen> nicht angegeben wird, so wird der gesamte Bitstring
-        <src> kopiert. Das Resultat besteht dann aus dem Bitstring <dest>
-        bis zur Position <deststart>, gefolgt von <src> ab der Position
-        <srcstart>.
+        If <copylen> is not given, it is assumed to be infinite, ie. the result
+        will consist of <dest> up to position <deststart>, followed by
+        the data copied from <src>.
+        If <copylen> is negative, the function will copy the abs(<copylen>)
+        bits _before_ <srcstart> in to the result.
 
-        Wenn <copylen> negativ ist, werden abs(<copylen>) _vor_ <srcstart> in
-        das Resultat kopiert.
+        None of the range limits can become negative.
 
-BEISPIELE
-        copy_bits(src, dest, 10)       === src[10..]
-        copy_bits(src, dest, 10, 5)    === dest[0..4] + src[10..]
-        copy_bits(src, dest, 10, 5, 3) === dest[0..4] + src[10..12] + dest[8..]
+EXAMPLES
+        copy_bits(src, dest, 10)    === src[10..]
+        copy_bits(src, dest, 10, 5) === dest[0..4] + src[10..]
+        copy_bits(src, dest, 10, 5, 3)
+                                    === dest[0..4] + src[10..12] + dest[8..]
 
-        (Die Notation src[] / dest[] dient nur der Illustration!)
+          (The src[]/dest[] is just for explanatory purposes!)
 
-GESCHICHTE
-        Eingefuehrt in LDMud 3.2.9.
+HISTORY
+        Introduced in LDMud 3.3.166.
 
-SIEHE AUCH
+SEE ALSO
         clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
         count_bits(E), or_bits(E), xor_bits(E), invert_bits(E), and_bits(E)
