As I've discovered it's not the run-time afterall, it's fact that it's a the DLL (doesn't matter whether it's single or multi-threaded, tested both). Further, it's seems that the source of the data is part of the problem.
Here's what I did:
1. Created two small tables to hold the necessary data.
2. Created a form will functions and properties to make the necessary calculations. There were two comparison functions. One with a straight evaluation of the two values returned. The other used VAL(TRANSFORM()) on the return values prior to the comparison.
3. Tested the functions, and they worked fine
4. Created a DLL with the same functions (copied and pasted from the form) and properties.
5. Tested against the DLL. Similarly, the comparison without the VAL(TRANSFORM()) returned false. The one with returned true.
6. Add a method to initialize the DLLs properties with literals.
7. Repeated the test. Both functions returned true.
So...
George
Ubi caritas et amor, deus ibi est