I like the idea of reimplementing primitives to show how they work!
But I think your BOUNCE block is buggy, and not just because you left out the number at the top. You're right that sometimes 360-direction is the right thing and sometimes 180-direction is. But what makes the difference is not the direction of the sprite but whether the edge it hit is vertical or horizontal. A vertical wall needs 360-direction; a horizontal wall (otherwise known as the ceiling or the floor) needs 180-direction.
Do some experiments. For example, put the sprite near the top of the stage and set its direction to 350, and see what your BOUNCE does.