The problem is the way C2 returns the value. It doesn't really return it, it sets a (global) variable. So the code is the equivalent of:
ReturnValue = 2*ReturnValue
Which of coarse gets confused.
Just use a local variable to store the first return value and set the new return value from it.