What happens if instead you use:
ReturnValue = true
I think you were complicating it your way.
You were first doing a SetValue, which sets a parameter value that only lives for the duration of the incoming request.
And then you turn around and do a StoreValue that moves the parameter into Session data.
Instead of simply setting the Session Value directly.