public FloatCartesian getOverflowDistance(Rectangle target){
        float furthestX, furthestY, furthestDistance, eachDistance;
        furthestX = 0;
        furthestY = 0;
        furthestDistance = 0;

        double distX, distY, overX, underX, overY, underY;

        for (FloatCartesian each : this)
        {
            overX = target.getMaxX() - each.x;
            if(overX > 0)
            {
                overX = 0;
            }

            underX = target.getMinX() - each.x;
            if(underX < 0)
            {
                underX = 0;
            }

            overY = target.getMaxY() - each.y;
            if(overY > 0)
            {
                overY = 0;
            }

            underY = target.getMinY() - each.y;
            if(underY < 0)
            {
                underY = 0;
            }

            distX = underX > Math.abs(overX) ? underX : overX;

            distY = underY > Math.abs(overY) ? underY : overY;



            eachDistance = (float) Math.sqrt( Math.abs(distX*distX) + Math.abs(distY*distY) );

            if(eachDistance > furthestDistance)
            {
                furthestDistance = eachDistance;
                furthestX = (float) distX;
                furthestY = (float) distY;
            }
        }

        return new FloatCartesian(furthestX, furthestY);
    }