No, I disagree.

InStr() is broken at the moment. Returning "1" for a null search is not valid - the character at position 1 is not a null string.

I can't think of any situation where you would want to return anything other than "0". If you want to check for a null string you would simply compare it, you would not check the return value from InStr().

Having InStr() return "0" is a useful and intuitive response. Having it return any other value means that you have to code around it unnecessarily. If returning "-1" or "-2" would make InStr() more useful I'd agree, but it doesn't.

Take the following example, a simple way to ask to format a disk in the local language :
code:
Dim $asYesOrNo[10]
Dim $asFormatDisk[10]

$ENGLISH=1
$FRENCH=2
$asYesOrNo[$ENGLISH]="YN"
$asYesOrNo[$FRENCH]="ON"
$asFormatDisk[$ENGLISH]="Format Disk [Y/N]"
$asFormatDisk[$FRENCH]="Composer le disque [O/N]"

$iLanguage=$FRENCH

Do
$asFormatDisk[$iLanguage]
Get $sResponse ?
$iResponse=InStr($asYesOrNo[$iLanguage],$sResponse)
Until $iResponse

If SubStr($asYesOrNo[$ENGLISH],$iResponse,1)="Y"
"Formatting disk..."
EndIf

If InStr() returned "0" for a null keypress this script would be fine, but currently it will return "1" for a keypress which will appear to be "Y" and will execute the format disk code.

"-1" is also true, and would have unexpected results.

When you use InStr() in a program you are specifically using it to test for a string being present. You will never use it to test if a string is null, or if a null string is present.