fix: somewhat more natural caret positions for changing values