             wheelPos   += wheelPosVel * dt;
             wheelAngle += wheelAngVel * dt;
 
-            wasStaticFriction   = false;
-            forceRatio          = getKineticForceRatio(slipRatio, totalForce);
+            wasStaticFriction   = tireKineticForce != 0;
+            forceRatio          = getKineticForceRatio(slipRatio);
             acceleration        = acc;
             angAcceleration     = angAcc;
             responseTorque      = -(appliedTorque - angAcc * wheelInertia);
 
-            const minVel:Number = 0.05;
+            const minVel:Number = 0.15;
 
             if(Math.abs(wheelPosVel) < minVel)
                 slipRatio = 0;

        throw new Error("slip ratio not found?");
    }

    private function getKineticForceRatio(slipRatio:Number, dir:Number):Number {
        var sr:Number = Math.abs(slipRatio);

        if(sr == 0)
            if(! sameSign(-dir, slipRatio, true))
                return 0.0;
            else
                return 0.8;

        if(sr <= 0.1)
            if(! sameSign(-dir, slipRatio, false))
                return sign(slipRatio) * (sr / 0.1);
            else
                return sign(slipRatio) * (0.8 + 0.2 * (sr / 0.1));

        if(sr <= 0.3)
            return sign(slipRatio) * (1 + 0.2 * ((0.1 - sr) / (0.3 - 0.1)));

        if(sr <= 1)
            return sign(slipRatio) * (0.8 + 0.2 * ((0.3 - sr) / (1 - 0.3)));

        return sign(slipRatio) * 0.6;
    }
}
}

    public var longSlipRatios:Vector.<Number>  = new <Number>[ -1.0, -0.333, -0.20, -0.133, -0.066, -0.033, 0,  0.01,  0.02,  0.04,  0.06,  0.10,  0.30,  0.50];
    public var longForceRatios:Vector.<Number> = new <Number>[0.625,  0.875, 0.999,  0.981,  0.875,  0.625, 0, 0.625, 0.875, 0.981, 0.999, 0.875, 0.625, 0.525];

    public var staticForceRatio:Number              = 0.8;
    public var kineticSlipRatios:Vector.<Number>    = new <Number>[0,  0.02,  0.04,  0.08, 0.1,  0.15,  0.40,  0.75, 1.25, 2.0];
    public var kineticForceRatios:Vector.<Number>   = new <Number>[0, 0.625, 0.875, 0.981, 1.0, 0.875, 0.625, 0.525, 0.45, 0.4];
    public var kineticPeakSlipRatio:Number          = 0.06;

    public function TirePhysics() {
        var maxForce:Number     = kineticForceRatios[0];
        kineticPeakSlipRatio    = kineticSlipRatios[0];

        var count:int = kineticSlipRatios.length;
        for(var i:int = 1; i < count; ++i) {
            var slip:Number     = kineticSlipRatios[i];
            var force:Number    = kineticForceRatios[i];

            if(force <= maxForce)
                continue;

            kineticPeakSlipRatio    = slip;
            maxForce                = force;
        }

//                for(var a:Number = 0; a < 1.2; a += 0.05)
//                    trace(a + ":", getKineticForceRatio(a));
    }

    public function step(dt:Number, subStepCount:int):void {
