angle_between just checks how “close” two vectors are to each other and have no concept of negative values or values over 180 degrees. However this snippet can distinguish concave and convex edges in a mesh which can then be used to interpret the value as negative (or 360 degrees minus the original value if you want positive numbers).