A DEFAULT sequence starts at one but it is able to generate any biginteger value. Regardless, the value generated by the sequence and the allowed values for the target column are distinct - which is why a sequence attached to a normal integer will start throwing "value out of bounds" errors before it runs out of values.
Therefore, by default if one is able to live with disallowing half of the bigint range for auto-generation using the negative half of the range for manual assignment is a quick-and-simple solution to the problem.
As proven by part 4 :) postgres=# insert into t (id, name) values(-777, 'rjs'); INSERT 0 1 postgres=# select * from t; id | name ------+------ 1 | rjs 777 | rjs -777 | rjs (3 rows)