if (bits_dir0 [j] [k] < 0 ) { reduce_bits += -bits_dir0 [j] [k] ; bits_dirO[j] [k] = 0 ; } } } rem = reduce bits - coding subbands*no subf rames*red times; for (j = 0 ; j < coding_subbands ; j++) { for (k = 0 ; k < no subframes; k++) { if ((n < rem) && (bits_dir0 [j] [k] > 0)) { bits_dir0[j] [k] -= 1 ; n++; } return ; } In some embodiments, a minimum number of bits, larger than 0, may be imposed for each block. The direction index encoder 225 may then be configured to implement the reduced number of bits allowed on a sub-band by sub-band basis. For example the direction index encoder 225 may be configured to determine based on a calculated number of allowed bits for a current sub-band from the first sub-band to the penultimate sub-band. In other words bits_allowed= sum(bits_dir1 [i][0:M-1]) from i=1 to N-1 . The direction index encoder may then be configured to attempt to encode the direction parameter indexes using a suitable entropy coding and determine how many bits are required for the current sub-band (bits_ec). Where this is less than a suitable fixed rate encoding mechanism using the determined reduced allocated number of bits, bits_fixed=bits_allowed, then the entropy coding is selected. Otherwise the fixed rate encoding method is selected. Furthermore one bit is used to indicate the method selected. In other words the number of bits used to encode the sub-band direction index is: nb = min(bits_fixed, bits_ec)+1 ;