How to find the intersection point of a curve with a trimmed surface.

We are starting with a body, a cylinder and then do

var faces = body.GetFaces();

for each face we get the surface using

var surface = (ISurface) face.GetSurface();

We then test if our curve intersects the surface via

object _points = null;

object _tArray = null;

object _uvArray = null;

double [] bounds = ..... // Calculate the bounds of curve

var r = surface.IntersectCurve2(curve, bounds, ref _points, ref _tArray, ref _uvArray);

However we find that IntersectCurve2 returns intersections on the infinite surface rather than the trimmed surface. What are we doing wrong?

SolidworksApi macros