signed_value =: monad define digits =. # y. if. 1 = 1 take y. do. ((digits copy 2) base y. ) - 2^digits else. (digits copy 2) base y. end. ) sign_extend=: dyad define digits =. # y. ((0 >. x. - digits) copy 1 take y.) , y.