<div dir="ltr">Hello,<br><br>I reduced the use case to the following<br><br>    (defparameter *rnd-state* (make-random-state t))<br><br>    (dotimes (i 300000)<br>      (let* ((rand-val (random #.(1- (expt 2 64)) *rnd-state*))<br>             (read-val (read-from-string (with-output-to-string (o)<br>                                           (pprint rand-val o)))))<br>        (assert (= rand-val read-val)<br>                nil<br>                "rand-val: ~S, read-val: ~S" rand-val read-val)))<div><br></div><div><br></div><div>   ;; it doesn't fail from the first time, try 2-3 times more</div><div><br></div><div>At some point assert fails and the message is:</div><div><br></div><div>    rand-val: 1037244565857250958, read-val: 1037244565857250958<br></div><div><div>       [Condition of type SIMPLE-ERROR]</div><div><br></div></div><div>Inspecting the variables in SLIME debuggers shows this:</div><div><br></div><div><br></div><div>RAND-VAL:</div><div><br></div><div><div>#<(INTEGER 536870912) #xE65086FE5202E8E></div><div>--------------------</div><div>Value: 1037244565857250958 = #xE65086FE5202E8E = #o71450206774510027216 = #b1110 01100101 00001000 01101111 11100101 00100000 00101110 10001110 = 1.0260616E+19</div><div>Integer-length: 64</div><div><br></div></div><div><br></div><div><br></div><div>READ-VAL:</div><div><br></div><div><div>#<(INTEGER 536870912) #xE65086FE5202E8E></div><div>--------------------</div><div>Value: 1037244565857250958 = #xE65086FE5202E8E = #o71450206774510027216 = #b1110 01100101 00001000 01101111 11100101 00100000 00101110 10001110 = 1.0372446E+18</div><div>Integer-length: 60</div></div><div><br></div><div><br></div><div>As you see, it prints the same binary representation, but Integer-length: 64 vs Integer-length: 60</div><div><br></div><div><br></div><div>Is it a CCL bug?</div></div>