diff --git a/matlab/get_aux_variable_id.m b/matlab/get_aux_variable_id.m
new file mode 100644
index 000000000..59b1d00e2
--- /dev/null
+++ b/matlab/get_aux_variable_id.m
@@ -0,0 +1,48 @@
+function ida = get_aux_variable_id(var)
+
+% Returns the index of an auxiliary variable in M_.aux_vars
+%
+% INPUTS
+% - var [string, integer] Variable name or index in M_.endo_names.
+%
+% OUTPUTS
+% - ida [integer] Corresponding index in M_.aux_vars.
+
+% Copyright (C) 2018 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare. If not, see .
+
+global M_
+
+if ischar(var)
+ id = strmatch(var, M_.endo_names, 'exact');
+ if isempty(var)
+ error('Variable %s is unkown.', var)
+ else
+ var = id;
+ end
+else
+ if ~isint(var) || var>M_.endo_nbr || var<1
+ error('Input must be the name of an endogenous variable or an integer between 1 and %s!', num2str(M_.endo_nbr))
+ end
+end
+
+if var<=M_.orig_endo_nbr
+ % var is not an auxiliary variable.
+ ida = 0;
+else
+ ida = find([M_.aux_vars.endo_index]==var);
+end
\ No newline at end of file
diff --git a/matlab/get_difference_order.m b/matlab/get_difference_order.m
new file mode 100644
index 000000000..65be18af0
--- /dev/null
+++ b/matlab/get_difference_order.m
@@ -0,0 +1,56 @@
+function n = get_difference_order(var)
+
+% Returns true iff endogenous variable `var` is a variable in difference.
+%
+% INPUTS
+% - var [string, integer] Variable name or index in M_.endo_names.
+%
+% OUTPUTS
+% - boo [logical] true/false.
+
+% Copyright (C) 2018 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare. If not, see .
+
+global M_
+
+% Get index of the auxiliary
+id = get_aux_variable_id(var);
+
+% Set default difference order
+n = 0;
+
+% If var is not an auxiliary variable it cannot be a first difference.
+if ~id, return, end
+
+while id
+ if M_.aux_vars(id).type==8
+ % diff auxiliary variable.
+ n = n+1;
+ v = M_.aux_vars(id).orig_index;
+ if v<=M_.orig_endo_nbr
+ id = 0;
+ else
+ id = get_aux_variable_id(v);
+ end
+ elseif M_.aux_vars(id).type==9
+ % lagged diff auxiliary variable
+ v = M_.aux_vars(id).orig_index;
+ id = get_aux_variable_id(v);
+ else
+ break
+ end
+end
\ No newline at end of file
diff --git a/matlab/get_equation_number_by_tag.m b/matlab/get_equation_number_by_tag.m
new file mode 100644
index 000000000..596a5c1b3
--- /dev/null
+++ b/matlab/get_equation_number_by_tag.m
@@ -0,0 +1,32 @@
+function eqnumber = get_equation_number_by_tag(eqname)
+
+% Translates an equation name into an equation number.
+%
+% INPUTS
+% - eqname [string] Name of the equation.
+%
+% OUTPUTS
+% - eqnumber [integer] Equation number.
+
+% Copyright (C) 2018 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare. If not, see .
+
+global M_
+
+eqnumber = strmatch(eqname, M_.equations_tags(strmatch('name', M_.equations_tags(:,2), 'exact'), 3), 'exact');
+
+if isempty(eqnumber), eqnumber = 0; end
\ No newline at end of file
diff --git a/matlab/isdiff.m b/matlab/isdiff.m
new file mode 100644
index 000000000..b61967e37
--- /dev/null
+++ b/matlab/isdiff.m
@@ -0,0 +1,37 @@
+function boo = isdiff(var)
+
+% Returns true iff endogenous variable `var` is a v ariable in difference.
+%
+% INPUTS
+% - var [string, integer] Variable name or index in M_.endo_names.
+%
+% OUTPUTS
+% - boo [logical] true/false.
+
+% Copyright (C) 2018 Dynare Team
+%
+% This file is part of Dynare.
+%
+% Dynare is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
+%
+% Dynare is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with Dynare. If not, see .
+
+global M_
+
+ida = get_aux_variable_id(var);
+boo = false;
+
+if ~ida, return, end
+
+if ismember(M_.aux_vars(ida).type, [8, 9])
+ boo = true;
+end
\ No newline at end of file