This is not a bug. As the 'Compare values' description says, it does not pick any objects, it just retrieves and compares two simple numbers. If you use an object in an expression it only picks the *first* one, it will not check any other instances at all.
Solution:
Fishes: pick nearest to Guy.X, Guy.Y
System: Distance(Guy.X,Guy.Y,Fishes.X,Fishes.Y) <= 130
-> Set exclamation position
Else
-> Set other position
This works because it picks the single closest instance, then checks if that is near enough.