function [eqn,insigs,innames] = junction_seqn (jun_type,Name, outsig, \
insigs, innames)
## usage: [eqn,insigs] = junction_seqn (jun_type,Name, outport, outsig, \
## insigs)
##
##
## Junctions
## Sanity check
N = mtt_check_sigs (outsig,insigs);
outport = outsig(3);
## Setup up causality corresponding to junction
if jun_type=="0"
i_jun_type = 1;
elseif jun_type=="1"
i_jun_type = -1;
else
error("Junction type %s unknown", jun_type)
endif
## Is output same causality as junction?
same_type = outsig(2)==i_jun_type;
## LHS
eqn = sprintf("%s :=", varname(Name, abs(outsig(1)), outsig(2)));
## Find the input bond of the same causality as junction
one = ones(N,1);
inport = find(insigs(:,2)==i_jun_type*one);
##RHS
if same_type
insig = insigs(inport,:);
inname = innames(inport,:);
eqn = sprintf("%s\n\t%s", eqn, varname(Name, abs(insigs(inport,1)),i_jun_type));
else
insig=[];
inname="";
inports = [];
out_dir = sign(insigs(inport,1));
for i=1:N
if i!=inport
in_dir = sign(insigs(i,1));
plusminus = sign2name(-in_dir*out_dir);
eqn = sprintf("%s\n\t%s%s", eqn, plusminus, varname(Name, \
abs(insigs(i,1)), -i_jun_type));
insig = [insig; insigs(i,:)];
inname = [inname; innames(i,:)];
endif
endfor
endif
eqn = sprintf("%s;", eqn);
insigs = insig;
innames = inname;
endfunction