After a closer look at this I found it's more down to the way things work rather than an actual bug. The values returned are based on the original data rather than changes made later down the line that happen when pivots are changed.
While this could be changed internally it is really the best choice to let the programmer control exactly what is going on. The solution in this case is to make a mesh from your object, delete the object and then make an object from the mesh -
make mesh from object 1, 1
delete object 1
make object 1, 1, 0
The full program is as follows -
`There is no way to tell the actual size unless angles of object
`are recorded before the pivot was fixed (as angles are reset by
`fix object pivot)
sync on
sync rate 60
`Make box, and rotate and fix pivot at 90 degrees
make object box 1,10,20,10
xrotate object 1,90
fix object pivot 1
show object bounds 1,1
make mesh from object 1, 1
delete object 1
make object 1, 1, 0
`Make wireframe box according to returned size and angle of box
make object box 2,object size x(1),object size y(1),object size z(1)
rotate object 2,object angle x(1),object angle y(1),object angle z(1)
set object wireframe 2,1
do
turn object right 1,1
turn object right 2,1
sync
loop
The information you require can now be returned using this method.