**Quote: **"somebody will come along and show the calculations I'm sure"

I happen to have a function for this, just enter the sprite ID, the point to rotate about and the angle to rotate by:

function rotateSpriteAbout(spriteID as integer, x as float, y as float, angle as float)
setSpriteAngle(spriteID, getSpriteAngle(spriteID) + angle)
sx# = getSpriteXbyOffset(spriteID)
sy# = getSpriteYbyOffset(spriteID)
dx# = sx# - x
dy# = sy# - y
a# = atanfull(dx#,dy#)+angle
d# = sqrt(dx#*dx#+dy#*dy#)
x1# = x + d#*sin(a#)
y1# = y - d#*cos(a#)
setSpritePositionByOffset(spriteID, x1#, y1#)
endfunction

Using AppGameKit V2 Tier 1