Thanks for the reminder that the argument is a pattern but the original search is for values. Using the output of SelectFirst sets the search up for an exact match. So the naive way to find the last element won't work.
ls = {.5, 1.0, 2.0};
Position[ls, SelectFirst[ls, # >= 1 &]][[-1]]
{2}
Neat way to force the evaluation. _?(# >= 1 &)
I think Mathematica needs a LastPosition function as much as it needs FirstPosition.