When i get the startpoint and endpoint of a line use code like this, I got the wrong data like this
double start, end;
bool isClosed, isPeriodic;
curve.GetEndParams(out start, out end, out isClosed, out isPeriodic);
//double startPnt = curve.Evaluate2(0, 0);
//double endPnt = curve.Evaluate2(1, 0);
double startPnt = curve.Evaluate2(start, 0);
double endPnt = curve.Evaluate2(end, 0);
Looks like you have an untrimmed curve there.
How did you obtain it? If it came from an Edge, you could look at GetCurveParams3
Retrieving data ...