I assume that a DIM SHARED array is shared into a FUNCTION in exactly the same way that it is shared into a SUB. The Wiki states that the sharing is with "sub-procedures" which again I assume includes FUNCTION: I tried a sample routine without passing the array as an argument to demonstrate it to myself (it worked as if shared). You might have supposed that an old-stager such as I really ought to know this, but I thought that I had better just check.