function v4canon,ina
in = ina
a = getv4type(in)
if(not data_chk(a,/struct)) then return,in

doublify= [0,0,0,0]

for i=0,3 do begin
    if(isnum(in.(i),/real)) then begin
        doublify(i) = (data_chk(in.(i),/type) eq 4)
        z = zunits(a.units(i),in.(i+5))
        if(z(0) eq 0) then begin
            print,"V4CANONICALIZE: Inconsistent units ",a.units(i)," vs. ",in.(i+5)
            return,in
        end
        in.(i) = in.(i) * z
        
        in.(i+5) = a.units(i)
    end
end

if(total(doublify) gt 0) then begin
    if doublify(0) then x0 = double(in.(0)) else x0 = in.(0)
    if doublify(1) then x1 = double(in.(1)) else x1 = in.(1)
    if doublify(2) then x2 = double(in.(2)) else x2 = in.(2)
    if doublify(3) then x3 = double(in.(3)) else x3 = in.(3)
    return,v4(x0,x1,x2,x3,in.(4),in.(5),in.(6),in.(7),in.(8),in.(9))
end else return,in
end