int unwrap(int *values, int numberOfValues, int modulo)//modulo = 360 { int add = 0; for (int i = 1; i < numberOfValues; i++) { while(abs(values[i-1] - values[i]) > modulo/2) { (values[i-1] > values[i]) ? add += modulo : add -= modulo; //could be faster if i kept the phase between samples values[i] += add; // but longer and less easy to read, in case of perfomance } // issue, there's probably a way to scrape a few cycles here add = 0; } }