diff -urN rt_v60/cross.c rt_v61/cross.c --- rt_v60/cross.c 2018-07-06 03:39:31.000000000 +0900 +++ rt_v61/cross.c 2018-07-13 20:09:46.000000000 +0900 @@ -334,7 +334,7 @@ if(kind_idx != KIND_BALL){ double *p = ret->l_nv_g.p; double *v = ret->l_nv_g.v; - double x[3], z[3]; + double x[3], y[3], z[3]; struct vecs vs; if(is_plane(kind_idx)){ @@ -354,7 +354,11 @@ v_sub(x, p, x); v_sub(z, p, z); vecs_by_fix_ref(&vs, 'x', x, 'z', z); - v_set( v, vecs_get_by_name(&vs, 'y') ); + v_set( y, vecs_get_by_name(&vs, 'y') ); + if(dot(y, v) < 0){ + v_neg(y, y); + } + v_set(v, y); } if(rev){