docs: def _dirint_bins(ktp, alt, w, dktp):
      """
      Determine the bins for the DIRINT coefficients.
  
      Args:
          ktp : Altitude-independent clearness index
          alt : Solar altitude angle
          w : precipitable water estimated from surface dew-point temperature
          dktp : stability index
  
      Returns:
          tuple of ktp_bin, alt_bin, w_bin, dktp_bin
      """
      it = range(len(ktp))
  
      # Create kt_prime bins
      ktp_bin = [-1] * len(ktp)
      ktp_bin = [0 if ktp[i] >= 0 and ktp[i] < 0.24 else ktp_bin[i] for i in it]
      ktp_bin = [1 if ktp[i] >= 0.24 and ktp[i] < 0.4 else ktp_bin[i] for i in it]
      ktp_bin = [2 if ktp[i] >= 0.4 and ktp[i] < 0.56 else ktp_bin[i] for i in it]
      ktp_bin = [3 if ktp[i] >= 0.56 and ktp[i] < 0.7 else ktp_bin[i] for i in it]
      ktp_bin = [4 if ktp[i] >= 0.7 and ktp[i] < 0.8 else ktp_bin[i] for i in it]
      ktp_bin = [5 if ktp[i] >= 0.8 and ktp[i] <= 1 else ktp_bin[i] for i in it]
  
      # Create altitude angle bins
      alt_bin = [-1] * len(alt)
      alt_bin = [0 if alt[i] <= 90 and alt[i] > 65 else alt_bin[i] for i in it]
      alt_bin = [1 if alt[i] <= 65 and alt[i] > 50 else alt_bin[i] for i in it]
      alt_bin = [2 if alt[i] <= 50 and alt[i] > 35 else alt_bin[i] for i in it]
      alt_bin = [3 if alt[i] <= 35 and alt[i] > 20 else alt_bin[i] for i in it]
      alt_bin = [4 if alt[i] <= 20 and alt[i] > 10 else alt_bin[i] for i in it]
      alt_bin = [5 if alt[i] <= 10 else alt_bin[i] for i in it]
  
      # Create the bins for w based on dew point temperature
      w_bin = [-1] * len(w)
      w_bin = [0 if w[i] >= 0 and w[i] < 1 else w_bin[i] for i in it]
      w_bin = [1 if w[i] >= 1 and w[i] < 2 else w_bin[i] for i in it]
      w_bin = [2 if w[i] >= 2 and w[i] < 3 else w_bin[i] for i in it]
      w_bin = [3 if w[i] >= 3 else w_bin[i] for i in it]
      w_bin = [4 if w[i] == -1 else w_bin[i] for i in it]
  
      # Create delta_kt_prime binning.
      dktp_bin = [-1] * len(dktp)
      dktp_bin = [0 if dktp[i] >= 0 and dktp[i] < 0.015 else dktp_bin[i] for i in it]
      dktp_bin = [1 if dktp[i] >= 0.015 and dktp[i] < 0.035 else dktp_bin[i] for i in it]
      dktp_bin = [2 if dktp[i] >= 0.035 and dktp[i] < 0.07 else dktp_bin[i] for i in it]
      dktp_bin = [3 if dktp[i] >= 0.07 and dktp[i] < 0.15 else dktp_bin[i] for i in it]
      dktp_bin = [4 if dktp[i] >= 0.15 and dktp[i] < 0.3 else dktp_bin[i] for i in it]
      dktp_bin = [5 if dktp[i] >= 0.3 and dktp[i] <= 1 else dktp_bin[i] for i in it]
      dktp_bin = [6 if dktp[i] == -1 else dktp_bin[i] for i in it]
  
      return ktp_bin, alt_bin, w_bin, dktp_bin