Getzval[n_, N_, x_, D_, d_, p_] :=
Module[{df0 = 0, fz = 0, z},
  df0 = Sum[p[[i]] / (1 - p[[i]]), {i,N}] ;
  z = N / df0 * (n-d) / (N - (n - d)) ;
  fz = Sum[p[[i]] z / (1 - p[[i]] + p[[i]] z), {i,N}] ;

  While[Abs[fz - n + d] > 0.001,
      z = (n - d) / (df0 - (n-d)*(df0/fz - 1/z));
      fz = Sum[p[[i]] z / (1 - p[[i]] + p[[i]] z), {i,N}] ;
  ];
  z
]