program test;

{$mode objfpc}{$H+}
{$modeSwitch advancedRecords}

type
   TRectangle = record
		   public
		   Left, Bottom: Integer;
		   Width, Height: Cardinal;

		function ScaleAround0(const Factor: Single): TRectangle;
		end;

function TRectangle.ScaleAround0(const Factor: Single): TRectangle;
begin
   if Width <= 0 then
   begin
      Result.Width  := Width;
      Result.Left   := Left;
   end;

   Result.Height := Height;
   Result.Bottom := Bottom;
end;

function Rectangle(const Left, Bottom: Integer;
		   const Width, Height: Cardinal): TRectangle;
begin
   Rectangle.Left := Left;
   Rectangle.Bottom := Bottom;
   Rectangle.Width := Width;
   Rectangle.Height := Height;
end;

var
   R, S	:  TRectangle;
begin
   R := Rectangle(10, 20, 0, 50);
   S := R.ScaleAround0(2);

   Writeln('w=', S.Width, ' w=', R.ScaleAround0(2).Width);   
end.
