Maybe this is a step backwards, but perhaps some macro magic to make everyone happy? e.g., void ConstAwareMat3Inv( float m1[][3], const float m2[][3] ); #define Mat3Inv(A,B) ConstAwareMat3Inv( (A), (float const (*)[3]) (B) ) Chris (Next: let's talk about that kooky prototype style! >=P)