Incorrect D5 typlib import behavior?

I am currently working on a project that creates quite a sophisticated com
model using MSVC++ ATL. The com objects created are
standard dual i/f objects and have been working fine for a long time. When
we imported the typelib in D4 everything was great,
however when we import the same library into D5 some (not all) IDispatch
properties have only read methods but no write methods.

The C++ IDL file does not have the dispid's specifically defined in it (we
let the Microsoft IDL compiler allocate them).

Code frag from C++ IDL file
--------------------------------------

     [
          object,
          uuid(74D80E60-3090-11d3-B8F6-0080C8EDAB31),
          dual,
          helpstring("IPMLBaseObject"),
          pointer_default(unique)
     ]
     interface IPMLBaseObject : IDispatch
     {
       ...(similar props removed....)
        [propget, helpstring("property GlobalID")]   HRESULT GlobalID([out,
retval] long *pVal);
        [propput, helpstring("property GlobalID")]   HRESULT GlobalID([in]
long newVal);
        [propget, helpstring("property Visible")]   HRESULT Visible([out,
retval] long * vis);
        [propput, helpstring("property Visible")]   HRESULT Visible([in]
long vis);
    }

Generated D5 TLB
--------------------------

(IDispatch i/f)

    IPMLBaseObject = interface(IDispatch)
    ['{74D80E60-3090-11D3-B8F6-0080C8EDAB31}']

        // correct Get/Set functions

        function  Get_GlobalID: Integer; safecall;
        procedure Set_GlobalID(pVal: Integer); safecall;
        function  Get_Visible: Integer; safecall;
        procedure Set_Visible(vis: Integer); safecall;

        // read only properties?

        property GlobalID: Integer read Get_GlobalID;
        property Visible: Integer read Get_Visible;
  end;

(dispinterface i/f)

  IPMLBaseObjectDisp = dispinterface
    ['{74D80E60-3090-11D3-B8F6-0080C8EDAB31}']
       property GlobalID: Integer read Get_GlobalID;
       property Visible: Integer readonly dispid 1610743821;
  end;

Generated D4 TLB
---------------------------
IPMLBaseObject = interface(IDispatch)
    ['{74D80E60-3090-11D3-B8F6-0080C8EDAB31}']

        // correct Get/Set functions

       function Get_GlobalID: Integer; safecall;
       procedure Set_GlobalID(pVal: Integer); safecall;
       function Get_Visible: Integer; safecall;
       procedure Set_Visible(vis: Integer); safecall;

       // correct read write props!

       property GlobalID: Integer read Get_GlobalID write Set_GlobalID;
       property Visible: Integer read Get_Visible write Set_Visible;
end;

Any suggestion anyone?

Paul Smith