<div id="mb_3">Sorry, &quot;reply&quot; instead of &quot;reply all&quot; again.<br>
<br>
Well, it seemed impossible to me, but here what I found in d_math.c (pd
0.40.0 or something, I&#39;m a bit lazy to look for version):<br>
<br>
static t_int *sigwrap_perform(t_int *w)<br>
{<br>
&nbsp;&nbsp;&nbsp; float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2);<br>
&nbsp;&nbsp;&nbsp; t_int n = *(t_int *)(w+3);<br>
&nbsp;&nbsp;&nbsp; while (n--)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; float f = *in++;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int k = f;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (f &gt; 0) *out++ = f-k;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else *out++ = f - (k-1);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; return (w + 4);<br>
}<br>
<br>
Here it definitely says:<br>
if f &lt;= 0 then return f - ((int f) - 1) = f - (int f) + 1 = frac(f) + 1<br>
which is 1 for each non-positive int, of course, and assumes
float-to-int conversions (int k = f) take &#39;neares to zero&#39; which seems
a dangerous assumption for me (I guess, it should return frac(f) + 1,
where 0&lt;=frac&lt;1 for each negative number; perhaps, some compiler
flags fix it, it depends on compiler, but for integers the result is
always 1).<br>
I think, the whole situation is worthy a bug report.<br>

</div>