The fact that File::end(s) only returns true only after the stream s has been read *past* end-of-file is really confusing, just like it was in the old Pascal file pointer days. IMHO it should read ahead and unget the character if it finds one. Bart