When dealing with Call History you have to remember that the records are "cut" when the segment ends. When a segment initiates, placeholders are made and as information becomes available it is entered into the segment. When a call has multiple logical segments a later initiated segment can end and be cut prior to the initial segment terminating.
What you are describing seems to occur most in my environment with transferred calls. ie.
call hits the switch, segment1 is initiated
agent answers, segment2 is initiated, call is transfered
transferto answers, segment3 is initiated, segment2 is ended
transferto ends call, segment3 is ended
segment1 is ended
call history records show seg2, seg3 and seg1. Seg1 only valid information is the transfer indication.
This obviously has implications for processing. In addition call history records can span intervals.