You do get the full range of the video available? Just the timecode is incorrect?
In that case the video is probably VBR. VLC then makes a best assumption based on the bitrate info in the stream and the amount of total mpeg blocks.
This is highly inaccurate. However the only way to accuratly determine this is by reading trough the entire file (which vlc would rather not do of course
) or by comparing the timestamp at the end, with the time at the beginning, but the timestamps in mpeg are not garantueed to be continious, so this is inaccurate as well.