Intersymbol interference and precoding loss are minimized by combining the precoding and coding operations. An intersymbol interference coder uses a feedback loop to apply a dither sequence to a sequence of input signal points. The dither signal applied to each input signal point is a function of the previous signal points in the sequence. The intersymbol interference coder implements, for example, a trellis coding operation by selecting one of several different modulo operations to determine the magnitude of the dither signal, the selection being made in response to the current trellis state. The sequence of signal points output from the intersymbol interference coder generates a valid sequence of the trellis code input to the Viterbi decoder.