Im gonna guess this is 3D right? Shouldnt it be only to take the crossproduct of the 2 vectors? Say you have this vector for up:
[0, 1, 0]
and this for right:
[1, 0, 0]

Then the crossproduct will be:
cross(up, right) = [0, 0, -1]
and
cross(right, up) = [0, 0, 1]

Alhtough i must say it was a long time since i did vector-stuff but this doesnt seem to be too far off.