"Negative values will stop searching at an arbitrary point prior to the end of the string. " ist misleading.
The needle may not fully part of searchrange, defined by a negative offset.
A negative offsets marks the last byte, where a search could start.
<?php
$test = "Hallo, Herr G?tt";
var_dump(strlen($test)); // int(17)
var_dump(mb_strrpos($test,'?tt',13)); // int(13)
var_dump(mb_strrpos($test,'?tt',-4)); // int(13) 17-4 = 13
var_dump(mb_strrpos($test,'?tt',-5)); // bool(false)
?>