This invention generally relates to methods, apparatus and computer program code for decoding signals, and more particularly to trellis-based decoding using a variant of a BCJR procedure. The invention includes a trellis decoder for decoding symbols of a received signal, the symbol including a sequence defined by transitions between states of a trellis, the trellis decoder including: means for performing a forward recursion through the trellis to determine a first set of probabilities (α(Xt)) each defining a probability of a said trellis state (Xt) responsive to one or more current or earlier received signal values (y1:t); means for providing a second set of (β(Xt)) probabilities each defining a probability of one or more received signal values (yt+1:T) given an earlier the trellis state (Xt); means to decode the received signal to determine probabilities (p(bt|y1:T)) for symbols of a corresponding transmitted sequence of symbols from the first and second sets of probabilities; and where the decoder further includes: means to select states for determining the first set of probabilities responsive to one or more received signal values later than a the trellis state defining a probability in said first set.