Easing in and out

Hey guys, I have a player which moves with the arrow keys, the player gains speed gradually and that works great, however I want it so that when they let go of the key, the character eases out and slowsly slows down to a stop. I have the code:

var i:Number = 0;
var speed:Number = 0;
var booster:Boolean = false;
var bkeyDown:Boolean = false;
var bkeyUp:Boolean = false;
var bkeyLeft:Boolean = false;
var bkeyRight:Boolean = false;
onEnterFrame = function () {
//point at mouse code
var dy = _ymouse - player._y;
var dx = _xmouse - player._x;
var radians = Math.atan2(dy, dx);
_root.player._rotation = radians * 180 / Math.PI;

// move code
if (Key.isDown(Key.DOWN)) {
bkeyDown = true;
_root.player._y += speed;
if (speed < 18) {
speed += .1;
}
booster = true;
}
else {
bkeyDown = false;
}
if (Key.isDown(Key.UP)) {
bkeyUp = true;
_root.player._y -= speed;
if (speed < 18) {
speed += .1;
}
booster = true;
}
else {
bkeyUp = false;
}
if (Key.isDown(Key.LEFT)) {
bkeyLeft = true;
_root.player._x -= speed;
if (speed < 18) {
speed += .1;
}
booster = true;
}
else {
bkeyLeft = false;
}
if (Key.isDown(Key.RIGHT)) {
bkeyRight = true;
_root.player._x += speed;
if (speed < 18) {
speed += .1;
}
booster = true;
}
else {
bkeyRight = false;
}

if (booster) {
attachEffect();
}
//ease out code

else{
if(speed > 0){
speed -= .7;
}
if(bkeyRight == false){
if(speed > 0){
_root.player._x += speed;
}
}
if(bkeyLeft == false){
if(speed > 0){
_root.player._x -= speed;
}
}
if(bkeyUp == false){
if(speed > 0){
_root.player._y -= speed;
}
}
if(bkeyDown == false){
if(speed > 0){
_root.player._y += speed;
}
}
}

booster = false;
_root.player.swapDepths(_root.getNextHighestDepth());
};

========================

But it doesn’t work. :frowning: help please?