                 } else {
                     found = true
                 }
+                if found {
+                    result = event
+                }
                 stop.initialize(to: true)
             }
         }
-        return found
+        return result
     }
     
     fileprivate func findSpecialEvents() {

        return found
    }
    
    fileprivate func findRecoilBack(_ timeRecoilFront: CUnsignedLongLong) -> Bool {
        var found: Bool = false
        let directions: Set<SearchDirection> = [.backward, .forward]
        search(directions: directions, startTime: timeRecoilFront, minDeltaTime: 0, maxDeltaTime: criteria.recoilBackMaxTime, maxDeltaTimeBackward: criteria.recoilBackBackwardMaxTime, useCycleTime: false, updateCycle: false) { (event: Event, time: CUnsignedLongLong, deltaTime: CLongLong, stop: UnsafeMutablePointer<Bool>) in
            if self.isBack(event, type: self.criteria.recoilType) {

            fgetpos(self.file, &position)
            let t = CUnsignedLongLong(event.param1)
            
            let recoilBack = self.findRecoilBack(t)
            fseek(self.file, Int(position), SEEK_SET)
            if let recoilBack = recoilBack {
                if criteria.startFromRecoil() {
                    storeFissionAlphaRecoilBack(recoilBack, match: recoilsPerAct, type: criteria.startParticleType, deltaTime: deltaTime)
                }
            } else if (criteria.requiredRecoilBack) {
                return false
