I almost posted this for support but then i gave it some more thought.

If Me is passed from to a function, it does not check for the correct interface.

Function DoSelect( ByRef o As iInterface1 ) AS Long

And call from interface2 (the same class and data) like:

DoSelect( Me )

This may have been solved by using ByVal (where the correct interface may get set?) or maybe we need to explicitly pass the correct interface.

In this case i was 'forced' to make a wrapper like:
Local c As iInterface1
c = Me.Interface1
DoSelect( c )

Better ideas?