I have checked the event queue and found out that:
1) the error senario is like I guessed, which is the x-event overlaps on top/bottom events. however,
2) it is not due to the imprecision of float #.
seems the 2 points should be neighbours, according to their x values. Actually, it is not like from float # at all. I am thinking the problem could be the findrightneighbour function or something like that.
I REALLY need to printout the whole tree while debugging. I just need to find a wise way to do so.