I also forgot to mention you that both connections were running in the same instance so both of them should have updated at the same time given as you said listen for WM_TIMECHANGE and this is stored globally (I assume).
Okay, it looks like I did not reproduce your original setup correctly.
Can you confirm that your setup was the following:
1) Run ZNC on a server synchronized to your current time, date, and DST. Technically, this means that ZNC could run locally on the same computer as mIRC. However, if ZNC is running on a different server, and the time, date, and DST on the server are not synchronized to your local computer, that could lead to the issue described in my previous post.
2) Run mIRC on your computer.
3) In the first status window, connect directly to a server and join a channel.
4) In the second status window, connect to the ZNC that connects to the same server and joins the same channel.
5) Type a message in the first channel window - this will appear in the second channel window.
6) Type a message in the second channel window - this will appear in the first channel window
7) Compare the message times in both channels.
Does that sound right?
Also, was the ZNC running on a Windows (which version) or non-Windows server?