It's the same problem as your first one. When a function expects a var, you must pass it a var. When a function expects a VECTOR* (which is the same as a var[3]), you must pass a VECTOR*.

What happens when you don't is that the bits are interpreted in a way they wheren't intended to when they where written. For example, a var contains bits for the integral parts and bits for the fractional part. A float or double contain bits for the base and exponent.