Returning Object from OLE Automation Method?

We have a COM Automation program that returns objects as function returns of
methods.  We do this using the OleVariant type which seems to work fine for
Delphi and C++Builder client programs but not so good from Visual Basic 4
programs.  It is unclear if this is a VB4 bug thats maybe fixed in VB 5 or 6
or perhaps there is a beter way.  

Is there a beter way to return a reference to a second object when calling a
method in the first object using COM?  Suggestions via email to e...@ibm.net
are welcomed.

In Delphi 3 here is how the COM Controller code works.
var
  V Variant;
begin
App := CreateOleObject('MyApp.Cmds');
V := App.MethodInFirstObject;
V.MethodInSecondObject;
end;

In this example, App.MethodInFirstObject returns a Variant variable type
that refers to a second object.

Regards,
HH