There is - despite you checking your code - a problem with your movement code. Are you using POLYGON models as a ground surface? You need to call c_setminmax() for them too to work correctly (otherwise no potential bbox collision will be calculated and as a result no polygonal detection check).
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual