src/main/java/net/sourceforge/jaad/aac/ps/PS.java
private void delta_modulo_decode(boolean enable, int[] index, int[] index_prev,
		boolean dt_flag, int nr_par, int stride,
		int and_modulo) {
		int i;

		if(enable) {
			if(!dt_flag) {
				/* delta coded in frequency direction */
				index[0] = 0+index[0];
				index[0] &= and_modulo;

				for(i = 1; i<nr_par; i++) {
					index[i] = index[i-1]+index[i];
					index[i] &= and_modulo;
				}
			}
			else {
				/* delta coded in time direction */
				for(i = 0; i<nr_par; i++) {
					index[i] = index_prev[i*stride]+index[i];
					index[i] &= and_modulo;
				}
			}
		}
		else {
			/* set indices to zero */
			for(i = 0; i<nr_par; i++) {
				index[i] = 0;
			}
		}

		/* coarse */
		if(stride==2) {
			index[0] = 0;
			for(i = (nr_par<<1)-1; i>0; i--) {
				index[i] = index[i>>1];
			}
		}
	}
private void delta_modulo_decode(boolean enable, int[] index, int[] index_prev,
		boolean dt_flag, int nr_par, int stride,
		int and_modulo) {
		int i;

		if(enable) {
			if(!dt_flag) {
				/* delta coded in frequency direction */
				index[0] = 0+index[0];
				index[0] &= and_modulo;

				for(i = 1; i<nr_par; i++) {
					index[i] = index[i-1]+index[i];
					index[i] &= and_modulo;
				}
			}
			else {
				/* delta coded in time direction */
				for(i = 0; i<nr_par; i++) {
					index[i] = index_prev[i*stride]+index[i];
					index[i] &= and_modulo;
				}
			}
		}
		else {
			/* set indices to zero */
			for(i = 0; i<nr_par; i++) {
				index[i] = 0;
			}
		}

		/* coarse */
		if(stride==2) {
			index[0] = 0;
			for(i = (nr_par<<1)-1; i>0; i--) {
				index[i] = index[i>>1];
			}
		}
	}
/* in: log2 value of the modulo value to allow using AND instead of MOD