This just goes on and on despite reporting the terminating condition in the body of the loop.Code:for (i = insertionPoint; i != start; i--) { if (i < 0) i += BUF_SIZE; cout << "swapping " << i << " and " << start << endl; swap (buffer, i, start); if (i == start) cout << "I really should be terminating under this condition." << endl; }