Binary variables will always work, you can't even say you didn't get it to work, or that's because you missed the point of using them.
You should not use $bvar().text to get the text, you can only display $bvar() which will display the ascii value of each byte.
on *:sockread:oref:{
if ($sockerr) { return }
sockread -nf &a
while ($sockbr) {
echo -a > $bvar(&a,1-).text :: $bvar(&a,1-)
sockread -nf &a
}
}
Using a /while is better than using /goto.
mIRC read the data fine, even if you use a simple %variable, it's just that it can't translate it to produce text, just like with $bvar().text, it just gives $null