function getZero_fullStart(negSwitches, posSwitches, bVal, fullStart) &
result(zeroWeight)
real(dp), intent(in) :: negSwitches, posSwitches, bVal
type(WeightData_t), intent(in) :: fullStart
real(dp) :: zeroWeight
character(*), parameter :: this_routine = "getZero_fullStart"
ASSERT(negSwitches >= 0.0_dp)
ASSERT(posSwitches >= 0.0_dp)
zeroWeight = fullStart%F * fullStart%plus + fullStart%G * fullStart%minus + &
(negSwitches * fullStart%G * fullStart%plus + &
posSwitches * fullStart%F * fullStart%minus) / max(1.0_dp, bval)
ASSERT(zeroWeight >= 0.0_dp)
end function getZero_fullStart