Motivated by problems in optimization we study the sparsity of the solutions to systems of linear Diophantine equations and linear integer programs, i.e., the number of non-zero entries of a solution, which is often referred to as the ℓ 0 -norm. Our main results are improved bounds on the ℓ 0norm of sparse solutions to systems Ax = b, where A ∈ Z m×n , b ∈ Z m and x is either a general integer vector (lattice case) or a non-negative integer vector (semigroup case). In the lattice case and certain scenarios of the semigroup case, we give polynomial time algorithms for computing solutions with ℓ 0 -norm satisfying the obtained bounds.