i create a simple example and it's working here. Just some precision issue (39.99999 instead of 40) but nothing too strange.
There's also this thread that could help you.
If you need to use the curve, you have to use the Remap function.
from c4d import gui
# Main function
tracks = op.GetCTracks()
fps = doc.GetFps()
time = c4d.BaseTime(20, fps)
for track in tracks:
print track.GetValue(doc, time, fps)
curve = track.GetCurve(c4d.CCURVE_CURVE)
newTime = track.Remap(time.Get())['ret_time']
newTime = c4d.BaseTime(newTime)
print curve.GetValue( newTime, fps)
# Execute main()