I don't think the following is intended? (it compiles with trunc). Note the property index is a var param TForm1 = class(TForm) private function GetFoo(var Index: Integer): Boolean; public property Foo[var Index: Integer]: Boolean read GetFoo; end; implementation function TForm1.GetFoo(var Index: Integer): Boolean; begin Result := True; end;