Fix: calc bug when using signed channel type