This is a bug reported in 3.2 and can be reproduced in master. InverseKinematicsTool tries to compute number of frames to solve (unnecessarily as it can just iterate over what's available within the specified timerange) and it ends up computing Nframes = std::int((final_time-start_time)/dt)+1 where dt = 1/samplingFrequency in .trc file header, due to numerical round-off this can lead to missing last frame downstream.
This is a bug reported in 3.2 and can be reproduced in master. InverseKinematicsTool tries to compute number of frames to solve (unnecessarily as it can just iterate over what's available within the specified timerange) and it ends up computing Nframes = std::int((final_time-start_time)/dt)+1 where dt = 1/samplingFrequency in .trc file header, due to numerical round-off this can lead to missing last frame downstream.