watch for sign change from I in sign()
simplify sign code, watch for recursion