I'm troubled by ChucK's handling of negative zero. A variable set to -0.0 is indistinguishable from a variable set to 0.0, except in printing. This is not a problem in everyday practice, but it seems likely that it will cause trouble when you pass to an external program. [Why would you set a variable to -0.0 in the first place? Try this: (-3.0 % 1.0) => float bar;] Comments? ==================== 0.0 => float foo; -0.0 => float bar; // even though foo and bar print differently... <<< "foo = ", foo, " bar = ", bar >>>; // in ChucK's eyes, they are both considered to be zero... <<< "sgn(foo) = ", Std.sgn(foo), " sgn(bar) = ", Std.sgn(bar) >>>; // and they are equal... if (foo == bar) { <<< "equal" >>>; } ==================== produces ==================== % chuck test.ck foo = 0.000000 bar = -0.000000 sgn(foo) = 0.000000 sgn(bar) = 0.000000 "equal" : (string) ====================