I agree with such a change.

It should probably be the case that $sline(@NoSuchWindow,0) and $line(@NoSuchWindow,0) and $nick(#NoSuchChannel,0) return $null as they currently do, but if the window exists, it seems reasonable that $sline should return the zero just like $line does for an empty @window. An exception to returning $null from non-existent things is how $lines(NoSuchFIle.txt) returns zero instead of $null. I don't think the zero-vs-null behavior should differ depending on whether a window is a @listbox or not.

I doubt this affects most scripts, because they would usually use the boolean check "while ($sline(@window,0))" instead of comparing the value to zero.

In a more general case, when a script needs to defend against the possibility that a variable or identifier can be null, and wants to treat that null the same as zero, there's a couple additional ways of handling it.

if (%variable == 0)
//var %variable $null | if (0 $+ %variable == 0) echo -a match

if (%variable > 0)
//var %variable $null | if (%variable !<= 0) echo -a match

You can also use $calc(%variable) but that has the side-effect of having text strings also treated as zero.