Here's some ancient code I wrote once to make a "true" overhang, unfortunately it only works properly for buildings with equal width and depth due to the trig used to calculate the y-offset. You could always eyeball it, though. Or just change it to have a floating "tent" hovering close above the structure.
attr overHang = 5
attr roofAngle = 30
@StartRule
Lot -->
extrude(1)
s(20,10,20)
center(xz)
comp(f){top: Roof RoofOverhang| all: NIL.}
Roof -->
roofPyramid(roofAngle)
RoofOverhang -->
s(scope.sx+overHang*2, scope.sy+overHang*2,'1)
roofPyramid(roofAngle)
center(xz)
split(y){overHang*tan(roofAngle): Overhang | ~1: NIL}
Overhang -->
t(0,-(overHang)*tan(roofAngle),0)
comp(f){top: styleOverhang | bottom: NIL}