This sort of thing happened to me in a previous project. Assuming that it's at least picking all of the possible choices (that's one problem, the picking / grouping issue sometimes causes confusion), then I would have thought pick nearest would work. If not, I'd probably do it through the debugger and maybe calculate the distance myself (there's a distance expression that works). If it's not picking correctly with pick nearest, are you sure the one you want is even included in the picked group? And if so, maybe the origin points are out?
I just re-read and see that the issue is that it's picking two instead of one? If you're doing picknearest, it should always pick one. So if it's picking two, are you sure the event isn't being run twice (happened to me before!)