Calculate geographical coordinates of a 2nd point by given 1st point, azimuth and distance

I searched the internet and didn't find an easy formula. And it's not that easy developing one by myself. Nevertheless I found source code for eliptical objects calculations, which I simplified. This is the Pascal source code: Download Vincclc2.pas.
l1,b1: longitude, latitude coordinates of start point in degrees (west/south:- east/north:+)
azi:   azimuth in degrees
dist:  distance in km

l2,b2: coordinates target
az21:  reverse azimuth

The formula
  lat1 := b1*pi/180;
  az12 := azi*pi/180;
  sinu1 := Sin(lat1);
  cosu1 := Cos(lat1);
  sina :=  cosu1 * Sin(az12);
  ss := Sin(dist/6378);
  cs := Cos(dist/6378);
  b2 := Arctan((sinu1*cs+cosu1*ss*Cos(az12))/(Sqrt(sqr(sina) + sqr(sinu1 * ss - cosu1 * cs * Cos(az12)))))*180/pi;
  l2 := l1+Arctan(ss * Sin(az12)/( cosu1 * cs - sinu1 * ss * Cos(az12)))*180/pi+720;
  az21 :=Arctan(sina/( -sinu1 * ss + cosu1 * cs * Cos(az12)))*180/pi+180;

  while b2>90 do b2:=b2-360;
  while l2>180 do l2:=l2-360;
  while az21>360 do az21:=az21-360; -> experience