-offset('N' , X) -> -X;
-offset('NE', X) -> -(X - 1);
-offset('E' , _) -> 1;
-offset('SE', X) -> X + 1;
-offset('S' , X) -> X;
-offset('SW', X) -> X - 1;
-offset('W' , _) -> -1;
-offset('NW', X) -> -(X + 1).
+offset('N' , X) -> ensure_negative(X);
+offset('NE', X) -> ensure_negative(X - 1);
+offset('E' , _) -> 1;
+offset('SE', X) -> X + 1;
+offset('S' , X) -> X;
+offset('SW', X) -> X - 1;
+offset('W' , _) -> ensure_negative( 1);
+offset('NW', X) -> ensure_negative(X + 1).