I guess "working correctly" for cyclic dependencies means you need to introduce the concept of time and be careful to update everything in the proper moment? What is this useful for?
It's generally useful for writing reactive, incremental, iterative programs.