You should either raise an exception or add a way for the caller to check that the read_double, read_real or read_integer operation failed to successfully read a real or integer. Otherwise, a file with unexpected contents can cause an infinite loop. This applies also to read_integer, which should not return 0 if it can't read a valid integer from the file (unless there is another boolean to indicate whether the read was successful). Note also that the obsolete routines (and their callers in EiffelBase) should probably be removed, or at least marked obsolete. The Eiffel routines are: {CONSOLE}.console_readint {CONSOLE}.console_pi {PLAIN_TEXT_FILE}.file_pi {PLAIN_TEXT_FILE}.file_gi The C routines are: file_gi (in file.c) console_readint (in console.c)