anchor.diff:  		else
   		{
   			if(playerInput.downKey == true)
  -			posY += speed * dt;
  +				posY += speed * dt;
   			if(playerInput.upKey == true)
  -			posY -= speed * dt;
  +				posY -= speed * dt;
   		}
   		
   		if(posX < 0)
  -		posX = 0.0;
  +			posX = 0.0;
   		if(posX > currentStreet.bounds.width - width)
  -		posX = currentStreet.bounds.width - width;
  +			posX = currentStreet.bounds.width - width;
   		
   		//check for collisions with platforms
  -		if(doPhysicsApply && !climbingDown && yVel >= 0)
  +		if(doPhysicsApply && !climbingDown && !climbingUp && yVel >= 0)
   		{
   			num x = posX+width/2;
   			Platform bestPlatform = _getBestPlatform(cameFrom);
  
positive.code: 	{
  		Platform bestPlatform;
  		num x = posX+width/2;
  		num from = cameFrom+height+currentStreet._data['dynamic']['ground_y'];
  		num bestDiffY = 1000;
  		
  		for(Platform platform in currentStreet.platforms)
  
negative.code: 				num slope = (platform.end.y-platform.start.y)/(platform.end.x-platform.start.x);
  				num yInt = platform.start.y - slope*platform.start.x;
  				num lineY = slope*x+yInt;
  				num diffY = (feetY-lineY).abs();
  
  				if(bestPlatform == null)
  				bestPlatform = platform;
  				else
  				{
  					if((lineY >= feetY || !jumping && feetY > lineY && headY < lineY) && diffY < bestDiffY)
  					{
  						bestPlatform = platform;
  						bestDiffY = diffY;
  