Problem solved !!
It was darkbasic's scale command which was causing the problem.
I replaced this with :
function scaleobject(ObjID, scX#,scY#,scZ#)
`you must loop through each limb adding to the existing vertex count
for xx = 0 to GetTotalLimbs( ObjID ) -1
LOCK VERTEXDATA FOR LIMB ObjID,xx,2
VertexCount =GET VERTEXDATA VERTEX COUNT()
for v = 0 to VertexCount -1
X# =GET VERTEXDATA POSITION X( v )
Y# =GET VERTEXDATA POSITION Y( v )
Z# =GET VERTEXDATA POSITION Z( v )
SET VERTEXDATA POSITION v, X#*scX#, Y#*scY#, Z#*scZ#
next v
next xx
UNLOCK VERTEXDATA
CALCULATE OBJECT BOUNDS ObjID `ADDED THIS
endfunction
function GetTotalLimbs( ObjID )
`check number of limbs on object
while limb exist(ObjID,LimbCount) = 1
LimbCount = LimbCount + 1
endwhile
endfunction LimbCount
All works great now