Crow was complaining about the green channel being misplaced (not enough yellow) so the math was pretty much completely redone.
PHP Code:
function ColorCycle(i) {
temp.i = i % 100;
temp.r = max((sin(max(i + 8, 0) / 12)), 0.01);
temp.g = max((sin(max(i + 1, 0) / 22)), 0.01);
temp.b = max((sin(max(i - 26, 0) / 21)), 0.01);
return {r, g, b};
}