anchor.diff:  begin
     inherited HandleLMouseUp(x, y, shiftstate);
     FIsPressed := False;
  -  if not Checked then
  -  begin
  -    Checked := not FChecked;
  -  end
  +  if not FChecked then
  +    Checked := true
     else
       RePaint;
   end;
  
positive.code: var
    nbr: TfpgRadioButton;
  begin
    if (keycode = keyUp) then
    begin
      consumed := True;
      nbr := FindNeighbor(fsdPrev);
      if nbr = Self then
        nbr := FindNeighbor(fsdLast);
      nbr.SetFocus;
      nbr.Checked := True;
    end else
    if (keycode = keyDown) then
    begin
      consumed := True;
      nbr := FindNeighbor(fsdNext);
      if nbr = Self then
        nbr := FindNeighbor(fsdFirst);
      nbr.SetFocus;
      nbr.Checked := True;
    end;
  
    if consumed then
  
negative.code: function TfpgRadioButton.FindNeighbor(direction: TFocusSearchDirection): TfpgRadioButton;
  var
    i: integer;
    wg: TfpgWidget;
    bestdtab: integer;
    FoundIt: boolean;
  begin
    Result := Self;
    if (Parent <> nil) then
    begin
      FoundIt := False;
      if direction in [fsdLast, fsdPrev] then
        bestdtab := Low(integer)   // or "-999999" like that in TfpgWidget.FindFocusWidget?
      else
        bestdtab := High(integer); // or "999999"?
      
      for i := 0 to Parent.ComponentCount-1 do
      begin
        wg := TfpgWidget(Parent.Components[i]);
        if (wg <> nil) and (wg is TfpgRadioButton) and
           wg.Visible and wg.Enabled and wg.Focusable and
           (TfpgRadioButton(wg).GroupIndex = GroupIndex) then
        begin
          case direction of
            fsdFirst:
              if (wg.TabOrder < bestdtab) then
              begin
                Result   := TfpgRadioButton(wg);
                bestdtab := wg.TabOrder;
              end;
                
            fsdLast:
              if (wg.TabOrder >= bestdtab) then
              begin
                Result   := TfpgRadioButton(wg);
                bestdtab := wg.TabOrder;
              end;
          
            fsdNext:
              if wg = Self then
                FoundIt := True
              else
              begin
                if ((wg.TabOrder > Self.TabOrder) and (wg.TabOrder < bestdtab)) or
                   ((wg.TabOrder = Self.TabOrder) and FoundIt) then
                begin
                  Result   := TfpgRadioButton(wg);
                  bestdtab := wg.TabOrder;
                end;
              end;
              
            fsdPrev:
              if wg = Self then
                FoundIt := True
              else
              begin
                if ((wg.TabOrder < Self.TabOrder) and (wg.TabOrder >= bestdtab)) or
                   ((wg.TabOrder = Self.TabOrder) and not FoundIt) then
                begin
                  Result   := TfpgRadioButton(wg);
                  bestdtab := wg.TabOrder;
                end;
              end;
          end; { case }
        end; { if }
      end;  { for }
    end;  { if }
  end;
  