IEnumVARIANT out of process server problem

I have a little problem with COM and the IEnumVARIANT interface.
When I compile the following code in an inproc server everything
works just fine. But when I try to make this COM-class to work
as an out of process server the result put in the rgvar parameter
by the Next method seems to be vanished when returning to the caller.
I don't have a clue what is wrong.

Thanks,
Geert.

function T_AnswerIterator.Next(celt: LongWord; var rgvar: OleVariant; out
pceltFetched: LongWord): HResult;
begin
  if celt = 1 then
  begin
    if not FAnswerIterator.EOC then
    begin
      rgvar := T_Answer.Create(FAnswerIterator.GetNext) as I_Answer;
      result := S_OK;
    end
    else
    begin
      rgvar := varNull;
      result := S_FALSE;
    end;
  end
  else
    result := S_FALSE;
end;

  T_AnswerIterator = class(TAutoObject, IEnumVARIANT)
  protected
    FAnswerIterator: TAnswerIterator;

    function Clone(out ppenum: IEnumVARIANT): HResult; stdcall;
    function Next(celt: LongWord; var rgvar: OleVariant; out pceltFetched:
LongWord): HResult; stdcall;
    function Reset: HResult; stdcall;
    function Skip(celt: LongWord): HResult; stdcall;
  public
    constructor Create(AnswerIterator: TAnswerIterator);
    destructor Destroy; override;
  end;