Thoughts on Feature Engineering of a duration_in_program Variable
What you are describing sounds much like a survival model, where you have observations that are still surviving (still in the program) and observations that died along the way (attrition). 

You would want to look into survival methods and how to censor your data. There are basic regression methods for this where you are trying to predict time-until-event. XGBoost can also handle censored data for survival.