You could use an incrementing, looping counter/timer that counts up to a number that is evenly divisible by all "timing" constants. After each increment, divide the counter total by the number of counts desired for each independent light (i.e. - 10 for one, 11 for another, 6 for a third). Check the modulus, and if it's 0, then set the associated countdown byte to turn on an output for the proper number of count cycles. Check your next constant and do the same. When you've done all 3, then decrement the countdown bytes and go to a routine to turn each output on if its associated countdown byte is non-zero. Rinse and repeat.

Picster