The Seek Tool will only save the profile data for a track if the tagged duration of a track is less than or equal to the actual playback duration of the track.

Detecting that a track has a duration tag that is shorter than the actual track is very easy (becuase you get timecodes greater than the duration would suggest).

Detecting that a track has a duration tag that is too long is actually quite involved, because from the Seek Tool's point of view it is not apparent whether you just skipped over the end of the track, or whether the end of the track was reached but that the tagged duration is wrong.

Unfortunately the reason for the Seek Tool not storing profile data for some tracks is that they have duration tags that say the track is longer than it actually is, and so there is no easy way of making it detect this and correct as appropriate. The simple answer (which would stop all the posts about partial profiles appearing) would be to make the seek tool store the profile no matter how much of it has been completed.

Of course, the correct answer is to make sure that your player has correct duration tags, but there is no easy way to do this.