関数内関数の事で教えて下さい

帰り値が動的配列な関数で 要素に追加する AddDataという関数内手続きを書きました

function func : TIntArray;

procedure AddData(dt:Integer);
var n:Integer;
begin
n:=Length(Result);
SetLength(Result,n+1);
Result[n]:=dt;
end;
・・・ 略 ・・・

これはエラーにならず期待した動作をします。
さらに、AddData内部で使用していた追加データの位置 n を返すように
function AddData(dt:Integer):Integer;
 と変更しようとして困ってしまいました。
Resultは 今度は自分の帰り値を指してしまいます。
といって pascal形式の関数名を使うと関数呼び出しになってしまいます。

これはどう解決すればいい?