I'm currently using a system where it checks everything based on raw co-ordinates. If the ball has an X co-ordinate higher than the box, but is within the top and the bottom of the box, it clearly is hitting the right side of the box. If it is above the box, but also to the right of the box it must be hitting the top right corner. The part that requires tinkering is the small offsets that are placed since the origin of both the box and the ball are the center of the object.
And I did say I setup proper law-abiding bouncing, it literally took two seconds to re-enable
The entire system is also fairly flexable, with many options to tinker with to have things work as precisely as you want
V_X/V_Y: The actual X/Y velocity the object is moving at
F_X/F_Y: The X/Y force being applied
Gravity_X/Gravity_Y: This increases/decreases the F_X/F_Y variable by this amount every time the script runs
Interpolate_Speed: This is how fast the values from F_X/F_Y is transferred to V_X/V_Y via linear interpolation
Drag_Interpolate: This is how fast F_X/F_Y are pushed to "0" via linear interpolation
Bounce_Multiplyer: This determines how much force is lost upon bouncing, 1=Zero loss. (This was the setting that was disabled in the video)
SaveY: This is a safe-check that stores the last Y position of the object, to prevent the F_Y from ever-increasing when the ball is resting on an object
Check_Multiplyer: This is used when checking collisions, this will multiply the velocity and add it to the offset when determining where the ball is hitting
Check_Offset: This is used when checking collisions, this is a flat addition value to the co-ordinates when checking where the ball is hitting
Friction_Interpolate: When a ball is rolling on the ground, this will slow the F_X/F_Y values towards "0" via linear interpolation
As well, if you're still interested here is the current bouncing script, it uses some funky directional math that is quite a bit more compact than my previous attempt (Used in ball bouncer). Basically after it knows which side the ball hit, it will set a variable to a direction that is perpendicular to the face it hits (And on corners, that direction is simply a 45 degree angle, or an X, where as flat sides are on the 90 degree angles, like a +)
It then calculates the difference between the moving direction and the "Reflection Angle" then adds/subtracts the difference multiplied by two, then inverts it 180 degree's which in turn will give you pretty much a good enough bounce.
Whew that was a long post.
EDIT:
As well, so far I havn't had a single issue with the balls not running the collision script, regardless of where they hit (Corners, sides, etc) thankfully