public static function Ldn($n, array $b, array $ob, array $sc, array &$sn) {
    foreach ($b as $i)
      if ($i instanceof iauLDBODY == false)
        throw new \InvalidArgumentException("All \$b elements must be iauLDBODY type");

    /* Light time for 1 AU (days) */
    $CR = AULT / DAYSEC;

    $i;
    $v  = [];
    $dt;
    $ev = [];
    $em;
    $e  = [];

    /* Star direction prior to deflection. */
    IAU::Cp($sc, $sn);

    /* Body by body. */
    for ($i = 0; $i < $n; $i++) {

      /* Body to observer vector at epoch of observation (au). */
      IAU::Pmp($ob, $b[$i]->pv[0], $v);

      /* Minus the time since the light passed the body (days). */
      $dt = IAU::Pdp($sn, $v) * $CR;

      /* Neutralize if the star is "behind" the observer. */
      $dt = min($dt, 0.0);

      /* Backtrack the body to the time the light was passing the body. */
      IAU::Ppsp($v, -$dt, $b[$i]->pv[1], $ev);

      /* Body to observer vector as magnitude and direction. */
      IAU::Pn($ev, $em, $e);

      /* Apply light deflection for this body. */
      IAU::Ld($b[$i]->bm, $sn, $sn, $e, $em, $b[$i]->dl, $sn);

      /* Next body. */
    }

    /* Finished. */
  }