anchor.diff:                if FVScrollBar.Visible then
                   FVScrollBar.PageUp;
                 // restore caret at same line offset as before
  -              CaretPos.Y := FTopLine + SaveXCaret;
  +              CaretPos.Y := FTopLine + SaveYCaretOffset;
               end;
             end
             else
  -          begin
  +          begin  { PageDown handling }
               if VPos > (FLines.Count - FVisLines) then
               begin
                 CaretPos.Y := FLines.Count-1;
  
positive.code:   to set selection if Shift key is pressed. }
  procedure TfpgBaseTextEdit.KeyboardCaretNav(const ShiftState: TShiftState; const AKeyCode: Word);
  var
    SaveXCaret: Integer;
  
    procedure CtrlKeyLeftKey;
    var
  
negative.code:               if FVScrollBar.Visible then
                  FVScrollBar.PageDown;
                // restore caret at same line offset as before
                CaretPos.Y := FTopLine + SaveYCaretOffset;
              end;
            end;
            if ssShift in ShiftState then
  