If the problem is that your zoom code is a mess, replace it with:
a = wrapvalue( a + zoom_speed )
distance_from_object = median_distance + ( cos( a ) * zoom_range )
where distance_from_object is how far back you will move the camera;
median_distance is your average distance from the object;
a is a looping value between 0-360, which returns -1 to +1;
zoom_speed is the speed at which a (and the zoom) changes;
zoom_range is how close/far away from the median_distance the zoom can get.
After that, point the camera at the object, then move the camera by -distance_from_object.
EBA;
FUI; Mario Land Ripoff.
Every time you post a joke in the form of code, mace yourself.