diff --git a/doc/ansi_C.doc b/doc/ansi_C.doc
index ee8e352df..8eb8c219d 100755
--- a/doc/ansi_C.doc
+++ b/doc/ansi_C.doc
@@ -82,7 +82,10 @@ unchanged.
 The result of bitwise operations on signed integers are what can be
 expected on a 2-complement machine.
 .IP -
-The sign of the remainder on integer division is machine dependent.
+If either operand is negative, whether the result of the / operator is the
+largest integer less than or equal to the algebraic quotient or the
+smallest integer greater than or equal to the algebraic quotient is machine
+dependent, as is the sign of the result of the % operator.
 .IP -
 The right-shift of a negative value is negative.
 .NS A.6.3.6
@@ -95,9 +98,8 @@ Truncation is always to the nearest floating-point number that can
 be represented.
 .NS A.6.3.7
 .IP -
-When a pointer is as large as an integer, the type of the sizeof-operator is
-'unsigned int', otherwise it is 'unsigned long'. The compiler will not
-run when a pointer fits in neither.
+The type returned by the sizeof-operator is 'unsigned int'. This is done
+for backward compatibility reasons.
 .IP -
 Casting an integer to a pointer or vice versa has no effect in
 bit-pattern when the sizes are equal. Otherwise the value will be
@@ -125,7 +127,7 @@ alignment is passed on to the compiler by the 'ack' program. When a
 user wants to do this manually, he/she should be prepared for trouble.
 .IP -
 A "plain" 'int' bit-field is taken as a 'signed int'. This means that
-a field with size 1 can only store the values 0 and -1.
+a field with a size 1 bit can only store the values 0 and -1.
 .IP -
 The order of allocation of bit-fields is a compile-time option. By
 default, high-order bits are allocated first.
@@ -133,20 +135,18 @@ default, high-order bits are allocated first.
 An enum has the same size as a "plain" 'int'.
 .NS A.6.3.10
 .IP -
-An access to a volatile object is either a load or a store. Just
-mentioning a volatile variable is not enough.
-E.g. the statement "x;" where x is declared volatile, does not
-constitute an access. When a volatile object should be read, but its
-value ignored, "if (x);" should do the trick.
-.NS A.6.3.11
+An access to a volatile declared variable is done by just mentioning
+the variable. E.g. the statement "x;" where x is declared volatile,
+constitutes an access.
+.S A.6.3.11
 .IP -
 There is no fixed limit on the number of declarators that may modify an
 arithmetic, structure or union type, although specifying too many may
-cause the compiler ro run out of memory.
+cause the compiler to run out of memory.
 .NS A.6.3.12
 .IP -
 The maximum number of cases in a switch-statement is in the order of
-1e9, although the compile may run out of memory somewhat earlier.
+1e9, although the compiler may run out of memory somewhat earlier.
 .NS A.6.3.13
 .IP -
 Since both the pre-processor and the compiler assume ASCII-characters, 
@@ -155,12 +155,12 @@ matches the same value in the execution character set.
 .IP -
 The pre-processor recognizes -I... command-line options. The
 directories thus specified are searched first. After that, depending on the
-command that the preprocessor is call with, machine/system-dependant
+command that the preprocessor is called with, machine/system-dependant
 directories are searched. After that, ~em/include/_tail_ac and
 /usr/include are visited.
 .IP -
-Quoted names are looked for in the directory in which the file currently
-being compiled resides.
+Quoted names are first looked for in the directory in which the file
+which does the include resides.
 .IP -
 The characters in a h- or q- char-sequence are taken to be UNIX
 paths.
@@ -180,6 +180,7 @@ The diagnostic printed by 'assert' is as follows:
 .br
 where <expr> is the argument to the assert macro, printed as string.
 (the <file> and <line> should be clear)
+.KS
 .IP -
 The sets for character test macros.
 .TS
@@ -192,6 +193,11 @@ islower()	a-z
 isupper()	A-Z
 isprint()	<space>-~ (== \e040-\e176)
 .TE
+.KE
+As an addition, there is an isascii() macro, which tests whether a character
+is an ascii character. Characters in the range from \e000 to \e177 are ascii
+characters.
+.KS
 .IP -
 The behaviour of mathematic functions on domain error:
 .TS
@@ -207,6 +213,7 @@ log10()	-HUGE_VAL
 pow()	0.0
 sqrt()	0.0
 .TE
+.KE
 .IP -
 Underflow range errors do not cause errno to be set.
 .IP -
@@ -237,7 +244,7 @@ The buffering intended by the standard is fully supported.
 A zero-length file actually exists.
 .IP -
 A file name can consist of any character, except for the '\e0' and
-the '\e'.
+the '/'.
 .IP -
 A file can be open multiple times.
 .IP -
@@ -259,7 +266,8 @@ scanlist for %[ conversion is taken to be a range indicator. When the
 first character has a higher ASCII-value than the second, the - will
 just be put into the scanlist.
 .IP -
-The value of errno is that of lseek(). This means:
+The value of errno when fgetpos() or ftell() failed is that of lseek().
+This means:
 .RS
 .IP "EBADF \-" 10
 when the stream is not valid