Not sure whether you would classify this as a bug or an undocumented feature, but there's inconsistent behavior between how global vars and hashtables handle the -uN and -z switches.

Hashtables items created using the -u or -z switch aren't written to disk unless /hsave uses the -u switch. However /saveini does not follow that same behavior with global vars except during ON EXIT.

This does not write the dash_u and dash_z hashtable items to disk:

Code:
//hfree testvar | hmake -s testvar | hadd -u60 testvar dash_u 1 | hadd -z testvar dash_z 60 | hadd testvar test | hsave -su testvar test.dat



but saveini does write global variables created using the -u and -z switches:

Code:
//var %varsini $readini($mircini,nt,rfiles,n1) | set -u600 %testvar1 1 | set -z %testvar2 600 | saveini | filter -fs $qt(%varsini) *testvar*



If you then quit mIRC before these variables unset, it does skip them during the final ON EXIT diskwrite. However that leaves open a window of opportunity for mirc to crash between the last of the interval saveini diskwrites and the final ON EXIT diskwrite. This leaves the next ON START event seeing these as if they're permanent globals. It is true that scripts can do a safety unset of these variables during ON START, but scriptors may not be aware they need to do that to safeguard against a rare crash.