So I think this behavior is correct, perhaps we should describe this
special case in the doc string. This function must end up at the
beginning of a visual line, and in your case there's only one such
place. Note that (beginning-of-visual-line 1) and
(beginning-of-visual-line) all end up in the same place in this case.
That's fine with me. While we're at it, move-beginning-of-line has the same inconsistency in the docstring. Arguably it's not that special of a case. With 50 lines in a buffer that doesn't end in a newline, (beginning-of-visual-line 99) does not end up at the end of the buffer as suggested by the docstring. In other words, it's the result of a buffer not ending in a newline, not that there is only one line in the buffer.
Also, it would be nice to specify what the return value of these functions is if the docstring will change.
Thanks,
Justin