Moving object on plane

Good day!

Please help with locked moving object on plane.
Exist object A on plane B. He moving repeatly from one side of palne to another.
I make mathematical calculations to get left and right cordinates of plane B and object A.
If plane B scale more than 3 - begin troubles. Object A just moving to the end of plane and fall. In debug log i can see than coords of object A less than plane B.

Here what i mean:

Here code:
using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {
	private float PlaneSizeX = 64;
	private float EnemySizeX = 64;
	private float eLeft; //enemy left position

	private float pLeft; //plane left position
	private float pRight; //plane right position
	private float Speed = 1;
	private Rigidbody2D mBody;
	private bool grounded = false;

	// Use this for initialization
	void Start () {
		mBody = GetComponent<Rigidbody2D>();
		eLeft = EnemySizeX * mBody.transform.localScale.x;
		eLeft = -(eLeft / 2) + (mBody.transform.position.x * EnemySizeX / 2);
		Debug.Log ("Enemy x : " + eLeft + " " + (eLeft + EnemySizeX * mBody.transform.localScale.x));
	}
	
	// Update is called once per frame
	void Update () {
		eLeft = mBody.transform.position.x * EnemySizeX - (EnemySizeX / 2);
		//eRight = mBody.transform.position.x * EnemySizeX + (EnemySizeX / 2);
		if (grounded) {
			//right test
			if ((eLeft + EnemySizeX * mBody.transform.localScale.x) >= pRight) {
				Debug.Log ((eLeft + EnemySizeX * mBody.transform.localScale.x) + " >= " + pRight);
				Speed = 0;
			}
			//left test 
			//if (eLeft <= pLeft)  {
			//	Speed = 1;
			//}
		}
		mBody.velocity = new Vector2(Speed, 0);
		Debug.Log (eLeft + " " + (eLeft + EnemySizeX*mBody.transform.localScale.x) + " " + mBody.transform.localScale.x);
	}

	void OnCollisionStay2D(Collision2D coll)
	{
		grounded = true;
		Collider2D Plane = coll.gameObject.GetComponent<Collider2D> ();
		//pLeft = (Plane.transform.position.x * PlaneSizeX - (PlaneSizeX / 2)) * Plane.transform.localScale.x;
		//pRight = (Plane.transform.position.x * PlaneSizeX + (PlaneSizeX / 2)) * Plane.transform.localScale.x;
		float ScaledSize = PlaneSizeX * Plane.transform.localScale.x;
		pLeft = -(ScaledSize)/2 + (Plane.transform.position.x * PlaneSizeX/2);
		pRight = (ScaledSize)/2 + (Plane.transform.position.x * PlaneSizeX/2);
		Debug.Log("Plane x: " + pLeft + " " + pRight);
	}
}

Get helped.
Wrong calculations.

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {
	private float eLeft;
	private float eRight;

	private float pLeft;
	private float pRight;
	private float Speed = 1;
	private Rigidbody2D mBody;
	private BoxCollider2D mCollider;
	private bool grounded = false;

	// Use this for initialization
	void Start () {
		mBody = GetComponent<Rigidbody2D>();
		mCollider = GetComponent<BoxCollider2D>();
		eLeft = transform.position.x - mCollider.bounds.size.x / 2;
		eRight = transform.position.x + mCollider.bounds.size.x / 2;
	}
	
	// Update is called once per frame
	void Update () {
		eLeft = transform.position.x - mCollider.bounds.size.x / 2;
		eRight = transform.position.x + mCollider.bounds.size.x / 2;
		if (grounded) {
			//right test
			if (eRight >= pRight) {
				Speed = -1;
			}
			//left test 
			if (eLeft <= pLeft)  {
				Speed = 1;
			}
		}
		mBody.velocity = new Vector2(Speed, 0);
	}

	void OnCollisionStay2D(Collision2D coll)
	{
		grounded = true;
		Collider2D Plane = coll.gameObject.GetComponent<Collider2D> ();
		pLeft = Plane.transform.position.x - Plane.bounds.size.x / 2;
		pRight = Plane.transform.position.x + Plane.bounds.size.x / 2;
	}
}