             }
         }
         
+        fuzzer.registerEventListener(for: fuzzer.events.InterestingProgramFound) { program in
+            self.lastInterestingProgramFound = Date()
+        }
+        
         // Do everything else after fuzzer initialization finished
         fuzzer.registerEventListener(for: fuzzer.events.Initialized) {
             if let stats = Statistics.instance(for: fuzzer) {

let Seconds = 1.0
let Minutes = 60.0 * Seconds
let Hours   = 60.0 * Minutes

// A very basic terminal UI.
class TerminalUI {
    // If set, the next program generated by the fuzzer will be printed to the screen.
    var printNextGeneratedProgram: Bool
    
    init(for fuzzer: Fuzzer) {
        printNextGeneratedProgram = false

            Type collection failure rate: \(String(format: "%.2f%%", stats.typeCollectionFailureRate * 100))
            """)
        }
    }
    
    private func formatTimeInterval(_ interval: TimeInterval) -> String {
        let days = Int(interval / Days)
        let hours = Int(interval / Hours) % 24
        let minutes = Int(interval / Minutes) % 60
        let seconds = Int(interval / Seconds) % 60
        return String(format: "%id %ih %im %is", days, hours, minutes, seconds)
    }
    
    private enum Color: Int {
