Nic, I've done a bit more testing and a bit more thinking and here's what I've come up with. I realise that you have designed it so that each message appears below the last because that's how English is written and read and that you have programmed it so it scrolls to the bottom so people can read the most recent messages. However, there seem to be two main problems:
1: the messages that users are posting are currently appearing near the top of the screen but if there are a lot of messages the software scrolls to the bottom of the screen, forcing users who have just entered the chat room to scroll back up to the top to read from the start.
2: there are usually a lot of messages on the screen because the software has generated a lot of "X has entered the chat" messages, most of which appear more than once and from which you can't tell whether they were posted before or after the messages that users have posted (and therefore you can't tell whether to read upwards or downwards or from the top or the bottom which was my problem).
If you removed the part of the software that posted the "X has entered the chat" messages leaving only the messages that users post the screen would only start scrolling to the bottom once there were more than enough messages to fill the screen. Furthermore, once the screen had filled up and was scrolling downwards users would only have to scroll back up if they had just entered the chat room or wanted to re-read old messages. Therefore, I suggest that you remove the automatic "X has entered the chat" facility (and advise users entering the chat room to announce their arrival by posting something like "Good morning") but leave the scrolling as it is for the moment and see how that works.
I hope that is of some use to you.