         split_t = splitFrom.split_t
         split_dt = splitFrom.split_dt
         split_rate = splitFrom.split_rate
+        new_steps = 0
         num_steps = splitFrom.num_steps
         num_splits = splitFrom.num_splits
         s = splitFrom.s

        return false
    }
    
    func split(time: Float) -> Ant {
        let tmp = dx
        dx = -dy
        dy = tmp
        split_t = time + split_dt + 2.0 * expf(-0.1 * split_dt * split_dt)
        if (split_dt >= s.split_dt_min && split_dt <= s.split_dt_max) {
            split_dt *= s.split_dt_factor
        }
        split_rate *= s.split_rate_factor
        num_splits += 1
        return Ant(splitFrom: self)
    }
    
    func step(time: Float, pixels: [PixelData]) -> AntStepResult {
        if (time > split_t ||
            atanf(split_rate * 0.25) * 0.6366 > Float(drand48())) {
            return AntStepResult.Split(split(time))
        }
        num_steps += 1
        x += dx
        y += dy

    var split_t: Float    // time at which the next split will be forced
    var split_dt: Float   // time between forced splits
    var split_rate: Float // rate at which random splits happen
    var new_steps: Int    // how many steps this ant has taken
    var num_steps: Float  // how many steps have happened total
    var num_splits: Float // how many splits have happened total
    var s: AntSettings! = nil
    
    init(x: Int, y: Int, dx: Int, dy: Int, time: Float, s: AntSettings) {
