2
int to_lower(int upper)
{
  static char                   cnv[256];
  static const unsigned char    *upper_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  static const unsigned char    *lower_list = "abcdefghijklmnopqrstuvwxyz";
  static int                    i, j;

  for (; i < 256; i++) cnv[i] = i;
  for (; upper_list[j] != '\0'; j++) cnv[upper_list[j]] = lower_list[j];
  return cnv[(unsigned char)upper];
}