Yeah, I've seen that before with ARM, several years ago. The network protocol uses an unsigned char to represent a direction. Netrek was written for 32-bit systems before i386 was a thing, and was later ported to i386 and tested. Testing concentrated on real players, and rarely robots. You're welcome to do a port to ARM and test. I'll review code changes. Other places of interest can be found with a "git grep atan2", where you will find; (a) some code which drops the result in a signed variable, then where it is negative add 256 to bring it into the unsigned char representation (ntserv/daemon.c, ntserv/util.c, robotd/dodge.c), (b) some other code using the same pattern you identified (robots/puckmove.c, xsg/input.c, xsg/redraw.c), (c) some code using a similar pattern as (a) but where the limiting is done before scaling (ntserv/wander2.c, tools/fun.c), There will also be other interesting casts to investigate. Big job. C99 not particularly relevant, given it came out way after Netrek was big. -- James Cameron http://quozl.netrek.org/