Please point me to the location where it says that upon no match the function returns -1.
As far as I know, the reaction upon no match has always been an error.


Note that -1 is not a logic indication for no match, because you could set ORIGIN:=-1, which might mean that returning -1 the value was found at the first position. On the other hand, returning any (scalar) value should mean there's something wrong, because match is supposed to return a vector with the indices/positions (as you can see in the first example); but NaN could be another choice. However it was chosen to return an error in such cases.
If you want to get -1 upon no match, you'll have to write your own match() function, or embed it in a program where you trap the error:

Success!
Luc