{
  "version": "https://jsonfeed.org/version/1",
  "title": "Money on Alex Johnstone",
  "icon": "https://avatars.micro.blog/avatars/2025/23/1791576.jpg",
  "home_page_url": "https://micro.alexjj.com/",
  "feed_url": "https://micro.alexjj.com/feed.json",
  "items": [
      {
        "id": "http://fondoftea.micro.blog/2024/02/05/changes-to-the-scottish-tax/",
        "title": "Changes to the Scottish Tax Bands",
        "content_html": "<h2 id=\"introduction\">Introduction</h2>\n<p>Scotland&rsquo;s government has decided that from next year (from a tax perspective) they&rsquo;ll be adding <em>another</em> tax band to Scotland. A 45 per cent income tax band for earnings between £75,000 and £125,140. Plus fiddling with the ranges and percentages of the other bands.</p>\n<p>So from the 6th April 2024 these will be the rates:</p>\n<table>\n<thead>\n<tr>\n<th><strong>Bands</strong></th>\n<th><strong>Band name</strong></th>\n<th><strong>Rate</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>£12,571 - £14,876</td>\n<td>Starter</td>\n<td>19%</td>\n</tr>\n<tr>\n<td>£14,877 - £26,561</td>\n<td>Basic</td>\n<td>20%</td>\n</tr>\n<tr>\n<td>£26,562 - £43,662</td>\n<td>Intermediate</td>\n<td>21%</td>\n</tr>\n<tr>\n<td>£43,663 - £74,999</td>\n<td>Higher</td>\n<td>42%</td>\n</tr>\n<tr>\n<td>£75,000 - £125,140</td>\n<td>Advanced</td>\n<td>45%</td>\n</tr>\n<tr>\n<td>Above £125,140</td>\n<td>Top</td>\n<td>48%</td>\n</tr>\n</tbody>\n</table>\n<p>The current ones are:</p>\n<table>\n<thead>\n<tr>\n<th><strong>Bands</strong></th>\n<th><strong>Band name</strong></th>\n<th><strong>Rate</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>£12,571 - £14,732</td>\n<td>Starter</td>\n<td>19%</td>\n</tr>\n<tr>\n<td>£14,733 - £25,688</td>\n<td>Basic</td>\n<td>20%</td>\n</tr>\n<tr>\n<td>£25,689 - £43,662</td>\n<td>Intermediate</td>\n<td>21%</td>\n</tr>\n<tr>\n<td>£75,000 - £125,140</td>\n<td>Higher</td>\n<td>42%</td>\n</tr>\n<tr>\n<td>Above £125,140</td>\n<td>Top</td>\n<td>47%</td>\n</tr>\n</tbody>\n</table>\n<p>The personal allowance (0%) remains the same at £12,570 (regardless of inflation, <strong>cough</strong> stealth tax <strong>cough</strong>) and the reduction of this between £100,000 to £125,140 by £1 for every £2.</p>\n<p>I&rsquo;m in the process of making myself a financial forecasting tool to figure out how much I should split between my ISA and pension, in the naive attempt to be financially independent by the time I&rsquo;m 50. The first part of that was making a function to calculate income tax, and whilst I was making it, I thought it might be interesting to see how these income tax changes impact everyone&rsquo;s salary, from £0 to £200k.</p>\n<p>For the record, here&rsquo;s England&rsquo;s tax bands:</p>\n<table>\n<thead>\n<tr>\n<th><strong>Bands</strong></th>\n<th><strong>Band name</strong></th>\n<th><strong>Rate</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>£12,571 - £50,720</td>\n<td>Basic</td>\n<td>20%</td>\n</tr>\n<tr>\n<td>£50,271 - £125,140</td>\n<td>Higher</td>\n<td>40%</td>\n</tr>\n<tr>\n<td>Above £125,140</td>\n<td>Additional</td>\n<td>45%</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"the-code\">The Code</h2>\n<p>The personal allowance is a funny thing, and took me a while to figure out how to calculate it correctly. Working this out is not a new problem so I looked on Github and it seemed people either did a whole load of <code>if</code> statements or some clever but unintelligible (by me at least) <a href=\"https://github.com/HJEGeorge/tax_calculator/blob/master/tax_tools.py#L178\">numpy matrix math</a>.</p>\n<p>The best way I found to understand it and calculate it such that I could pass various bands and percentages, was to remove the personal allowance from your income and the tax bands that were under £100k, in something that looks like this:</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-python\" data-lang=\"python\"><span style=\"color:#66d9ef\">def</span> <span style=\"color:#a6e22e\">calculate_scottish_income_tax</span>(income, bands, rates, allowance<span style=\"color:#f92672\">=</span><span style=\"color:#ae81ff\">12570</span>):\n\n\n    <span style=\"color:#75715e\"># Initialize tax and income variables</span>\n    personal_allowance <span style=\"color:#f92672\">=</span> calc_personal_allowance(income)\n    tax_due <span style=\"color:#f92672\">=</span> <span style=\"color:#ae81ff\">0</span>\n    remaining_income <span style=\"color:#f92672\">=</span> income <span style=\"color:#f92672\">-</span> personal_allowance\n\n    post_pa_bands <span style=\"color:#f92672\">=</span> [item <span style=\"color:#f92672\">-</span> (allowance <span style=\"color:#f92672\">-</span> personal_allowance) <span style=\"color:#66d9ef\">if</span> item <span style=\"color:#f92672\">&lt;</span> <span style=\"color:#ae81ff\">125140</span> <span style=\"color:#66d9ef\">else</span> item <span style=\"color:#66d9ef\">for</span> item <span style=\"color:#f92672\">in</span> bands]\n\n    <span style=\"color:#75715e\"># Calculate tax for each band</span>\n    <span style=\"color:#66d9ef\">for</span> i <span style=\"color:#f92672\">in</span> range(len(bands)):\n        <span style=\"color:#66d9ef\">if</span> remaining_income <span style=\"color:#f92672\">&lt;=</span> <span style=\"color:#ae81ff\">0</span>:\n            <span style=\"color:#66d9ef\">break</span>\n\n        <span style=\"color:#75715e\"># Determine the taxable amount in the current band</span>\n        taxable_amount <span style=\"color:#f92672\">=</span> min(remaining_income, post_pa_bands[i<span style=\"color:#f92672\">+</span><span style=\"color:#ae81ff\">1</span>] <span style=\"color:#f92672\">-</span> post_pa_bands[i])\n\n        <span style=\"color:#75715e\"># Calculate tax for the current band</span>\n        tax_due <span style=\"color:#f92672\">+=</span> taxable_amount <span style=\"color:#f92672\">*</span> rates[i]\n\n        <span style=\"color:#75715e\"># Update remaining income</span>\n        remaining_income <span style=\"color:#f92672\">-=</span> taxable_amount\n\n    <span style=\"color:#66d9ef\">return</span> tax_due\n</code></pre></div><p>I&rsquo;d also created a function to determine the personal allowance:</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-python\" data-lang=\"python\"><span style=\"color:#66d9ef\">def</span> <span style=\"color:#a6e22e\">calc_personal_allowance</span>(income, allowance<span style=\"color:#f92672\">=</span><span style=\"color:#ae81ff\">12570</span>, threshold<span style=\"color:#f92672\">=</span><span style=\"color:#ae81ff\">100000</span>):\n  <span style=\"color:#66d9ef\">return</span> min(allowance, max(allowance<span style=\"color:#f92672\">-</span>(income<span style=\"color:#f92672\">-</span>threshold)<span style=\"color:#f92672\">/</span><span style=\"color:#ae81ff\">2</span>,<span style=\"color:#ae81ff\">0</span>))\n</code></pre></div><p>My function takes a list of the bands and percentages. As I couldn&rsquo;t think of another way to do it whilst keeping it simple I just add a trillion pounds to the upper end of the bands. A trillion isn&rsquo;t entirely necessary, but I figured it should cover most of the population.</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-python\" data-lang=\"python\">bands_23_24 <span style=\"color:#f92672\">=</span> [<span style=\"color:#ae81ff\">12570</span>, <span style=\"color:#ae81ff\">14732</span>, <span style=\"color:#ae81ff\">25688</span>, <span style=\"color:#ae81ff\">43662</span>, <span style=\"color:#ae81ff\">125140</span>, <span style=\"color:#ae81ff\">1e9</span>]\nrates_23_24 <span style=\"color:#f92672\">=</span> [<span style=\"color:#ae81ff\">0.19</span>, <span style=\"color:#ae81ff\">0.20</span>, <span style=\"color:#ae81ff\">0.21</span>, <span style=\"color:#ae81ff\">0.42</span>, <span style=\"color:#ae81ff\">0.47</span>]\n\nbands_24_25 <span style=\"color:#f92672\">=</span> [<span style=\"color:#ae81ff\">12570</span>, <span style=\"color:#ae81ff\">14876</span>, <span style=\"color:#ae81ff\">26561</span>, <span style=\"color:#ae81ff\">43662</span>, <span style=\"color:#ae81ff\">75000</span>, <span style=\"color:#ae81ff\">125140</span>, <span style=\"color:#ae81ff\">1e9</span>]\nrates_24_25 <span style=\"color:#f92672\">=</span> [<span style=\"color:#ae81ff\">0.19</span>, <span style=\"color:#ae81ff\">0.20</span>, <span style=\"color:#ae81ff\">0.21</span>, <span style=\"color:#ae81ff\">0.42</span>, <span style=\"color:#ae81ff\">0.45</span>, <span style=\"color:#ae81ff\">0.48</span>]\n</code></pre></div><p>Let&rsquo;s do a few tests:</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-python\" data-lang=\"python\">income <span style=\"color:#f92672\">=</span> <span style=\"color:#ae81ff\">100000</span>\n\ntax_2324 <span style=\"color:#f92672\">=</span> calculate_scottish_income_tax(income, bands_23_24, rates_23_24)\ntax_2425 <span style=\"color:#f92672\">=</span> calculate_scottish_income_tax(income, bands_24_25, rates_24_25)\n\nprint(<span style=\"color:#e6db74\">f</span><span style=\"color:#e6db74\">&#34;Income of £</span><span style=\"color:#e6db74\">{</span>income<span style=\"color:#e6db74\">}</span><span style=\"color:#e6db74\"> paid £</span><span style=\"color:#e6db74\">{</span>tax_2324<span style=\"color:#e6db74\">}</span><span style=\"color:#e6db74\"> last year and £</span><span style=\"color:#e6db74\">{</span>tax_2425<span style=\"color:#e6db74\">}</span><span style=\"color:#e6db74\"> this year&#34;</span>)\n</code></pre></div><pre tabindex=\"0\"><code>Income of £100000 paid £30038.48 last year and £30778.309999999998 this year\n</code></pre><p>Well, it&rsquo;s gone up, but what about everyone else?</p>\n<h2 id=\"results\">Results</h2>\n<p>Time to see what&rsquo;s happened across the spectrum for 99.9999% of the population.</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4\"><code class=\"language-python\" data-lang=\"python\">x_values <span style=\"color:#f92672\">=</span> np<span style=\"color:#f92672\">.</span>arange(<span style=\"color:#ae81ff\">0</span>, <span style=\"color:#ae81ff\">200001</span>, <span style=\"color:#ae81ff\">1000</span>)\n\ndf <span style=\"color:#f92672\">=</span> pd<span style=\"color:#f92672\">.</span>DataFrame({<span style=\"color:#e6db74\">&#39;Income&#39;</span>: x_values})\ndf[<span style=\"color:#e6db74\">&#39;Tax 2023/2024&#39;</span>] <span style=\"color:#f92672\">=</span> df[<span style=\"color:#e6db74\">&#39;Income&#39;</span>]<span style=\"color:#f92672\">.</span>apply(<span style=\"color:#66d9ef\">lambda</span> x: calculate_scottish_income_tax(x, bands_23_24, rates_23_24))\ndf[<span style=\"color:#e6db74\">&#39;Tax 2024/2025&#39;</span>] <span style=\"color:#f92672\">=</span> df[<span style=\"color:#e6db74\">&#39;Income&#39;</span>]<span style=\"color:#f92672\">.</span>apply(<span style=\"color:#66d9ef\">lambda</span> x: calculate_scottish_income_tax(x, bands_24_25, rates_24_25))\ndf[<span style=\"color:#e6db74\">&#39;Change&#39;</span>] <span style=\"color:#f92672\">=</span> df[<span style=\"color:#e6db74\">&#39;Tax 2024/2025&#39;</span>] <span style=\"color:#f92672\">-</span> df[<span style=\"color:#e6db74\">&#39;Tax 2023/2024&#39;</span>]\ndf <span style=\"color:#f92672\">=</span> df<span style=\"color:#f92672\">.</span>round(<span style=\"color:#ae81ff\">2</span>)\n</code></pre></div><p><img src=\"https://fondoftea.micro.blog/uploads/2025/956aedb62b.jpg\" alt=\"Compare the bands\" title=\"Comparing the bands\"></p>\n<p>Obviously above £75k it has changed, but actually at the lower amounts it has changed too. Generally, slightly better as the band ranges have changed. Although if you earn £15k a year, I&rsquo;m not sure how much you&rsquo;ll notice the £1.44 extra, given the double digit inflation and Brexit consequences.</p>\n<p>Check out that steep gradient between £100k and £125k, the loss of the personal allowance makes it a very high marginal rate of tax.</p>\n<p>Let&rsquo;s just have a look at the change between them to make it more obvious.</p>\n<p><img src=\"https://fondoftea.micro.blog/uploads/2025/a26060e8c3.jpg\" alt=\"Delta between tax years\" title=\"Delta between tax years\"></p>\n<p>The <a href=\"https://digitalpublications.parliament.scot/ResearchBriefings/Report/2023/2/27/e0888682-8f9a-46f0-9448-5a588c583f58\">median earnings in Scotland</a> is £27,710, so how does that person fair? Well as I&rsquo;ve already alluded to, they are better off&hellip;by £10.17 a year. (Final tax home pay will of course depend on lots of things, including national insurance, which I&rsquo;ve not got to yet).</p>\n<h2 id=\"conclusion\">Conclusion</h2>\n<p>Without getting too political, there are the numbers. Make of it what you will. Here&rsquo;s England vs. the new Scottish bands.</p>\n<p><img src=\"https://fondoftea.micro.blog/uploads/2025/080e2af6ea.jpg\" alt=\"Delta between Scotland and England\" title=\"Delta between Scotland and England]\"></p>\n<p>The graph doesn&rsquo;t win awards for comprehension, so the hint is, Scotland costs more. 🏴󠁧󠁢󠁳󠁣󠁴󠁿</p>\n",
        "date_published": "2024-02-05T02:00:00+01:00",
        "url": "https://micro.alexjj.com/2024/02/05/changes-to-the-scottish-tax/",
        "tags": ["Money"]
      }
  ]
}
