The sign function doesn't seem to work for negative values greater than -1. For example, sign(-0.999999) returns 0.
If you need a workaround, you can create a function with "val<0?-1:1"
Sorry if this is duplicate. It didn't turn up in a search.