Fix a runtime exception when _position<_start

Somehow _start can go beyond _position and this is only checked by
Debug.Assert in CheckInvariants. At runtime this causes exception in
multiple places.