One thing that I've always found annoying about languages with built-in Boolean data types is that values for those Booleans can only be TRUE or FALSE. Really, how useless is that? What happens when you want IsConnected() to return the string "I'll tell you, but it'll cost you a buck". This is why I'm glad that there's plenty of opportunities out there to work in languages like C that do not have such types built in. Look at how much easier it was for Duncan Young's colleague to add functionality to one of their applications ...

BOOL AcceptAdjustment( int AccountNumber, int AdjustmentCode, char* Comments, BOOL  IsAdministrative )
{
   // ensure that Adjustment code is valid for non-admin adjustments
   if ( IsAdministrative == FALSE )
   {
      //...
   }


   //...


   // audit administrative adjustment
   if ( IsAdministrative == TRUE )
   {
      //...
   }

   //...

   // check if adjustment should be applied to aggregates as well
   if ( IsAdministrative == 2 )
   {
      // ...
   }

   //...
}