anchor.diff:        VK_PRIOR: MoveCursorVerticallyNUpdateSelections(-GetVisibleRows);
         VK_NEXT:  MoveCursorVerticallyNUpdateSelections(GetVisibleRows);
         VK_LEFT:  begin
  -                  OldCursorPos := CursorPos;
  +                  oldCursorPos := CursorPos;
                     CursorPos := CursorPos - 1;
  -                  UpdateSelection(OldCursorPos);
  +                  UpdateSelection(oldCursorPos);
                   end;
         VK_RIGHT: begin
  -                  OldCursorPos := CursorPos;
  +                  oldCursorPos := CursorPos;
                     CursorPos := CursorPos + 1;
  -                  UpdateSelection(OldCursorPos);
  +                  UpdateSelection(oldCursorPos);
                   end;
         VK_HOME:  begin
  -                  OldCursorPos := CursorPos;
  +                  oldCursorPos := CursorPos;
                     CursorPos := GetMinCursorPosInRow;
  -                  UpdateSelection(OldCursorPos);
  +                  UpdateSelection(oldCursorPos);
                   end;
         VK_END:   begin
  -                  OldCursorPos := CursorPos;
  +                  oldCursorPos := CursorPos;
                     CursorPos := GetMaxCursorPosInRow;
  -                  UpdateSelection(OldCursorPos);
  +                  UpdateSelection(oldCursorPos);
                   end;
       end
     else
  
positive.code:   // Update Focus now, because we need to focus on MouseDown, not on MouseUp as by default for all controls
    MasterParent.fMasterControl.UpdateFocus(Self);
  
    OldCursorPos := CursorPos;
    CursorPos := GetCursorPosAt(X, Y);
  
    if Focusable then
    begin
      //Try select on Shift + LMB click
      if (OldCursorPos <> -1) and (Shift = [ssLeft, ssShift]) then
        UpdateSelection(OldCursorPos)
      else begin
        ResetSelection;
      end;
  
negative.code: 
  
  procedure TKMMemo.MouseMove(X,Y: Integer; Shift: TShiftState);
  var
    oldCursorPos: Integer;
    charPos: TKMPoint;
  begin
    inherited;
    if (ssLeft in Shift) and (fSelectionInitialPos <> -1) then
    begin
      charPos := GetCharPosAt(X, Y);
  
      // To rotate text to top while selecting
      if (Y-AbsTop-3 < 0) and (TopIndex > 0) then
      begin
        Dec(charPos.Y);
        SetTopIndex(TopIndex-1);
      end;
      // To rotate text to bottom while selecting
      if (Y-AbsTop-3 > fHeight)
        and (fScrollBar.Position < fScrollBar.MaxValue) then
      begin
        charPos.Y := EnsureRange(charPos.Y+1, 0, fItems.Count);
        SetTopIndex(TopIndex+1);
      end;
  
      oldCursorPos := CursorPos;
      CursorPos := PointToLinearPos(charPos.X, charPos.Y);;
      UpdateSelection(oldCursorPos);
    end;
  end;
  
  