function plain_Millikan_diameter (millibar, Celsius, Z {cm2V-1s-1} : real) : real;
 {Uses external function "plain_Millikan_mobility". If failed then result = 0.
  The diameter correction 0.3-0.6 can be added to the returned value of d}
  var c, d, test : real;
               n : integer;
  begin
    c := 100; n := 0;
    repeat
      n := n + 1;
      d := (0.6 + sqrt (0.36 + 200 * c * Z)) / (c * Z) - 0.4;
      test := plain_Millikan_mobility (millibar, Celsius, d);
      c := (1.2 / (d + 0.4) + 200 / sqr (d + 0.4)) / test;
    until (abs (test / Z - 1) < 1e-6) or (n = 99);
    if n < 99 then plain_Millikan_diameter := d else plain_Millikan_diameter := 0;
  end;