A me così da valori esatti ...
codice:
void num2date (long ng, int *gg, int *mm, int *aa)
{
  for (*aa = 0; ((ng >= 365 && (!(isBisS(*aa))))||(ng >= 366 && isBisS(*aa))); (*aa)++)
    if (isBisS(*aa))
      ng -= 366;
    else
      ng -= 365;
      
  for (*mm = 1;
        (( *mm == 2 && (( ng > 29 && isBisS (*aa))||(ng> 28 && !isBisS (*aa))))
        || (( *mm == 4 || *mm == 6 || *mm == 9 || *mm == 11) && ng > 30)
        || ng > 31);
        (*mm)++ )
            {
              if (*mm == 2)
                if (isBisS(*aa))
                  ng -= 29;
                else
                  ng -= 28;
              else
                if (*mm == 4 || *mm == 6 || *mm == 9 || *mm == 11)
                  ng -= 30;
                else
                  ng -= 31;
            }
           
  *gg = ng+1;
  return;
}