@@ -189,7 +189,9 @@ function generate_function(sys::AbstractODESystem, dvs = unknowns(sys),
189189        wrap_code =  identity,
190190        kwargs... )
191191    if  isdde
192-         eqs =  delay_to_function (sys)
192+         issplit =  has_index_cache (sys) &&  get_index_cache (sys) != =  nothing 
193+         eqs =  delay_to_function (
194+             sys; history_arg =  issplit ?  MTKPARAMETERS_ARG :  DEFAULT_PARAMS_ARG)
193195    else 
194196        eqs =  [eq for  eq in  equations (sys)]
195197    end 
@@ -211,7 +213,10 @@ function generate_function(sys::AbstractODESystem, dvs = unknowns(sys),
211213    t =  get_iv (sys)
212214
213215    if  isdde
214-         build_function (rhss, u, DDE_HISTORY_FUN, p... , t; kwargs... )
216+         build_function (rhss, u, DDE_HISTORY_FUN, p... , t; kwargs... ,
217+             wrap_code =  wrap_code .∘  wrap_mtkparameters (sys, false , 3 ) .∘ 
218+                         wrap_array_vars (sys, rhss; dvs, ps) .∘ 
219+                         wrap_parameter_dependencies (sys, false ))
215220    else 
216221        pre, sol_states =  get_substitutions_and_solved_unknowns (sys)
217222
@@ -570,9 +575,7 @@ function DiffEqBase.DDEFunction{iip}(sys::AbstractODESystem, dvs = unknowns(sys)
570575        kwargs... )
571576    f_oop, f_iip =  eval_or_rgf .(f_gen; eval_expression, eval_module)
572577    f (u, h, p, t) =  f_oop (u, h, p, t)
573-     f (u, h, p:: MTKParameters , t) =  f_oop (u, h, p... , t)
574578    f (du, u, h, p, t) =  f_iip (du, u, h, p, t)
575-     f (du, u, h, p:: MTKParameters , t) =  f_iip (du, u, h, p... , t)
576579
577580    DDEFunction {iip} (f, sys =  sys)
578581end 
0 commit comments