Well I solved it, the problem was that I was copying bytes instead of floats in this section:
rem shift all data down
for n=1 to memblock dword(MemNum,8)-((Pos*6)+6)
write memblock float MemNum,Pos*216+12+((n-1)*4),memblock float(MemNum,(Pos+1)*216+12+((n-1)*4))
next n
should be:
rem shift all data down
for n=1 to memblock dword(MemNum,8)*9-(pos*54)
write memblock float MemNum,Pos*216+12+((n-1)*4),memblock float(MemNum,(Pos+1)*216+12+((n-1)*4))
next n
complete code:
function MC_ShiftFaceToEnd(MemNum,Pos)
rem locals
local n as dword
local dim store#(53) as float
rem load mesh data of block into array
for n=0 to 53
store#(n)=memblock float(MemNum,Pos*216+(n*4)+12)
next n
rem shift all data down
for n=1 to memblock dword(MemNum,8)*9-(pos*54)
write memblock float MemNum,Pos*216+12+((n-1)*4),memblock float(MemNum,(Pos+1)*216+12+((n-1)*4))
next n
rem write stored data at the end of memblock
for n=0 to 53
write memblock float MemNum,((memblock dword(MemNum,8)/6)-1)*216+(n*4)+12,store#(n)
next n
endfunction
TheComet