From:  Michael Gibson
3735.2 In reply to 3735.1 
Hi Steve - curve intersection is a tolerance based algorithm, meaning it looks points between 2 curves that are within a specified tolerance value.

In shared tangent areas like you show there, the 2 curves are within a 0.001 tolerance of each other not just at one point but actually within a range, and those 2 points that you see there are at the ends of the range.

If you drop a line from those points from 1 curve to the other and then select it, you should see that its length is less than 0.001 units (which is the tolerance used here).

MoI v1 used a tolerance of half of that, which helped in this case but that tighter tolerance caused problems with missed intersections in other cases such as trying to create intersections between the results of 2 surface/surface intersections.

MoI v2 does have some special treatment of circles and lines to generate just a single intersection in cases like this, but your long segment is not a line, it's slightly curved.

I can probably do something to tune this up, by doing some extra work when an overlapping range was found to do an additional localized intersection search at a higher tolerance value trying to look for a single result, I've put that on my list of stuff to look at.

This problem is not unique to MoI, for example loading your file in Rhino v4 and drawing points with intersection osnap will make a similar result.

- Michael