The server sends all modes when joining, and individual modes as they are changed. It's clear that mIRC receives the modes because .limit and .key are filled properly, they just aren't in .mode.

Code:
[16:31:27] * Now talking in #a
[16:31:41] <Membear> Mode: +npstlk 3 a
[16:31:48] * Memnoch sets mode: -lk a
[16:31:55] <Membear> Mode: +npst
[16:32:09] * Memnoch sets mode: +lk 3 a
[16:32:14] <Membear> Mode: +npst

Code:
-> irc.us JOIN #a a
<- :Membear!Memnoch@IP JOIN :#a
-> irc.us MODE #a
<- :irc.us 353 Membear @ #a :@Memnoch!memnoch@IP Membear!Memnoch@IP 
<- :irc.us 366 Membear #a :End of /NAMES list.
<- :irc.us 324 Membear #a +klnpst a 3
<- :irc.us 329 Membear #a 1403704175
-> irc.us PRIVMSG #a :Mode: +npstlk 3 a
<- :Memnoch!memnoch@IP MODE #a -lk a
-> irc.us PRIVMSG #a :Mode: +npst
<- :Memnoch!memnoch@IP MODE #a +lk 3 a
-> irc.us PRIVMSG #a :Mode: +npst

Code:
<- :irc.us 005 Membear AWAYLEN=201 CASEMAPPING=rfc1459 CHANMODES=IYbe,k,Ljl,CKMORScimnprstuz CHANTYPES=# CHARSET=ascii ELIST=MU EXCEPTS=e EXTBAN=,CORScz FNC INVEX=I KICKLEN=256 MAP MAXBANS=60 :are supported by this server
<- :irc.us 005 Membear MAXCHANNELS=20 MAXPARA=32 MAXTARGETS=20 MODES=20 NAMESX NETWORK=irc.us NICKLEN=33 PREFIX=(qaohv)~&@%+ SECURELIST SSL=0.0.0.0:6697 STARTTLS STATUSMSG=~&@%+ TOPICLEN=308 :are supported by this server
<- :irc.us 005 Membear UHNAMES VBANLIST WALLCHOPS WALLVOICES :are supported by this server